ASP.NET MVC значение bool, возвращаемое из представления, равно 1 или 0
Я использую ASP.NET MVC, и у меня есть некоторые проблемы с использованием CheckBoxFor. Вот моя проблема:
У меня есть следующий код в представлении:
@Html.CheckBoxFor(model => model.stade, new { @id = "stade" })
model.stade
имеет тип bool. В моем контроллере у меня есть:
//Editar
[HttpPost]
public ActionResult InvoiceType(int Id, string Name, string Code, string Stade)
{
clsInvoiceTypea Model = new clsInvoiceType();
Model.Id = Id;
Model.Name = Name;
Model.Code = Code;
Model.Stade = stade== "1" ? true : false;
return PartialView(Model);
}
Я получаю ошибку, потому что когда Model.Stade
передается в представление со значением 1 или 0, и я получаю сообщение об ошибке "Не удается распознать строку как допустимое логическое значение", но если Model.stade является логическим значением, почему модель передается в представление, например 0 или 1? Как я могу решить это?
1 ответ
Здесь идет мое решение -
Пусть ваша модель будет -
public class clsInvoiceTypea
{
public int Id { get; set; }
public string Name { get; set; }
public string Code { get; set; }
public bool stade { get; set; }
}
Пусть ваше действие HttpGet будет -
public ActionResult GetInvoice()
{
clsInvoiceTypea type = new clsInvoiceTypea();
return View(type);
}
И соответствующий вид -
@model YourValidNameSpace.clsInvoiceTypea
@{
ViewBag.Title = "GetInvoice";
}
<h2>GetInvoice</h2>
@using (Html.BeginForm("SubmitData","Home",FormMethod.Post)) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>clsInvoiceTypea</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Code)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Code)
@Html.ValidationMessageFor(model => model.Code)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.stade)
</div>
<div class="editor-field">
@Html.CheckBoxFor(model => model.stade)
@Html.ValidationMessageFor(model => model.stade)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
Пусть следующее будет вашим действием HttpPost -
[HttpPost]
public ActionResult SubmitData(clsInvoiceTypea model)
{
return View();
}
Когда вы запустите код, вы получите следующий вид -
Если вы установите флажок и нажмете кнопку "Создать", если вы установите точку останова для метода POST и проверите значение, вы получите значение true.