Если chekboxне выбран, то при submit формы не передается значение false. Как сделать чтобы он передавался?
<input type="checkbox" name="checkbox" value="true" />
<input type="hidden" name="checkbox" value="false" />
bool checked = Request.Form["checkbox"] != "false";
Напрямую никак. Если чекбокс не выбран, он вообще не передаётся на сервер. В отличие, например, от пустого текстового поля. Это легко проверить с помощью isset, отправив пустой type="text" и пустой type="checkbox":
<form action="" method="POST">
<input type="text" name="text" />
<input type="checkbox" name="checkbox" value="true" />
<input type="submit" name="submit" value="отправить" />
</form>
<?
if(isset($_POST['text'])) {
echo "text_true"; //выведет "text_true": значения нету, но элемент в массиве $_POST есть
}
else {
echo "text_false";
}
if(isset($_POST['checkbox'])) {
echo "check_true";
}
else {
echo "check_false"; //выведет "check_false", т.е. в принципе нету такого элемента в массиве $_POST
}
?>
Если очень надо передавать на сервер true/false состояния чекбокса, можно делать проверку на клиенте и заносить результат в поле hidden, а уже значение hidden получать на сервере:
<form action="" method="POST">
<input type="text" name="text" />
<input type="checkbox" name="checkbox" />
<input type="hidden" name="hidden" />
<input type="submit" name="submit" value="отправить" />
</form>
$('form').submit(function(){
if(!$('[name="checkbox"]').prop('checked')) {
$('[name="hidden"]').val(false);
}
else {
$('[name="hidden"]').val(true);
}
});
<? echo $_POST['hidden']; ?>
Продвижение своими сайтами как стратегия роста и независимости