You can add value="aa" to your checkbox, and that will be the value sent if the box is checked. Native checkboxes don't have a way to send an 'unchecked' value. You either have to check server-side if the checked value is missing, or implement a javascript workaround.
One way to work around this in javascript would be to have a hidden field with the real value, and hook up an event to the checkbox to toggle the value of the hidden field.
Here is a native HTML example using jQuery to hook up the workaround:
<input type="hidden" name="myrealtextboxvalue" id="myrealtextboxvalue" value="bb"/>
<input type="checkbox" name="toggle" id="toggle"/> Check me
<script>
$(document).ready(function() {
$("#toggle").change(function() {
if($(this).is(":checked")) $("#myrealtextboxvalue").val("aa");
else $("#myrealtextboxvalue").val("bb");
});
});
</script>
You would then look for the "myrealtextboxvalue" server side to find your 'aa' or 'bb' value.
Working example: http://jsbin.com/agucer/1/edit
(I made the input visible so you could see the change take place, you'd change type="hidden" like I have above)
name=valueif it's checked. Perhaps you could use a hidden form field, and set that to aa if your checkbox is checked, otherwise bb?