Ich habe ein Problem.Checkbox Wert ist immer falsch ASP MVC 5
Was auch immer ich mache, ist mein Checkbox-Wert immer falsch.
Ich benutze dieses Modell
public class ActEntry : BaseEntity
{
[Required]
public int DepartmentId { get; set; }
[Required]
[Display(Name = "Тип")]
public EnergyType EnergyType { get; set; }
[Required]
[Display(Name = "Имя объекта установки")]
public string Name { get; set; }
[Required]
[Display(Name = "Позиция")]
public string Postition { get; set; }
[Required]
[Display(Name = "Проектная")]
public bool HasDoc1 { get; set; }
[Required]
[Display(Name = "Исполнительная")]
public bool HasDoc2 { get; set; }
[Required]
[Display(Name = "Статус")]
public State State { get; set; }
[Display(Name = "Дата сдачи")]
public DateTime? DateOfCommit { get; set; }
[Required]
[Display(Name = "Акт допуска")]
public string Act { get; set; }
[Required]
[Display(Name = "Год акта")]
public int Year { get; set; }
}
Meine Form:
<div class="modal fade" id="editRow">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h2 class="modal-title" id="modalTitle"></h2>
</div>
<div class="modal-body">
<form class="form-horizontal" method="post" id="detailsForm">
<input type="hidden" id="Id" name="Id">
<input type="hidden" id="DepartmentId" name="DepartmentId" value="@Model.DepartmentId">
<input type="hidden" id="EnergyType" name="EnergyType" value="@Model.EnergyType">
<div class="form-group">
<label for="Name" class="control-label col-xs-3">Имя объекта установки</label>
<div class="col-xs-9">
<input class="form-control" id="Name" name="Name">
</div>
</div>
<div class="form-group">
<label for="Postition" class="control-label col-xs-3">Позиция</label>
<div class="col-xs-9">
<input type="text" class="form-control" id="Postition" name="Postition">
</div>
</div>
<div class="form-group">
<label for="Postition" class="control-label col-xs-3">Наличие документации</label>
<div class="col-xs-9">
<label class="checkbox-inline">
<input type="checkbox" name="HasDoc1" value="true">Проектная</label>
<label class="checkbox-inline">
<input type="checkbox" name="HasDoc2" value="true">Исполнительная</label>
</div>
</div>
<div class="form-group">
<label for="Act" class="control-label col-xs-3">Акт допуска</label>
<div class="col-xs-9">
<input type="text" class="form-control" id="Act" name="Act">
</div>
</div>
<div class="form-group">
<label for="Year" class="control-label col-xs-3">Год акта</label>
<div class="col-xs-9">
<input type="text" class="form-control" id="Year" name="Year">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-3"></label>
<div class="col-xs-9">
<button class="btn btn-primary" type="button" onclick="save()">Сохранить</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
Hier sind diese Kontrollkästchen:
<label class="checkbox-inline">
<input type="checkbox" name="HasDoc1" value="true">
<input type="hidden" name="HasDoc1" value="false">Проектная</label>
<label class="checkbox-inline">
<input type="checkbox" name="HasDoc2" value="true">
<input type="hidden" name="HasDoc2" value="false">Исполнительная</label>
Meine Ajax-Skript:
function save() {
if (!$('#detailsForm').valid()) return false;
$.ajax({
type: "POST",
url: "/Ajax/CreateOrUpdate/",
data: $('#detailsForm').serialize(),
success: function() {
$('#editRow').modal('hide');
updateTable();
successNoty('Успешно сохранено')
}
});
};
Als ich serialisierte Werte sah, bemerkte ich, dass HasDoc2
& HasDoc1
falsch sind. Wenn ich sie in Chrome einchecke und sie mit $('#HasDoc1').val()
& $('#HasDoc2').val()
teste, werde ich immer falsch.
Als ich ihre Namen hasDoc1 ändern & hasDoc2, plötzlich ich gewünscht werden, wenn ich sie überprüfen. Was mache ich falsch?
Gibt es spezielle Regeln für die Benennung von Kontrollkästchen in ASP MVC? Ich habe versucht, Helfer zu verwenden, das Ergebnis ist das gleiche.
Verwenden Sie die 'HtmlHelper' Methoden die korrekte Schreibweise Ihrer Formular-Steuerelemente (für eine Checkbox -' @ Html.CheckBoxFor (m => m.yourProperty) ') - erzeugen Handbuch html' Wert =“ false "' und ein Formular gibt die Name/Wert-Paare seiner Formularsteuerelemente zurück, so dass es immer 'false' postet (es gibt den Status 'checked' nicht zurück) –
@StephenMuecke warum es" false "-Wert hat, wenn explizit angegeben es? Und gibt es Möglichkeiten, es manuell zu tun? –
Sie benannten Kontrollkästchen. Nicht angegebene ID Und in Jquery oder Chrome versuchen Sie, auf es durch ID $ ('# HasDoc1') .val() zuzugreifen. So kann hasDoc1 von der Razor Engine id generiert werden. Bitte prüfe. – Amit