模型 属性 值未从剃须刀中的 html 复选框更改
Model property value is not changing from html checkbox in razor
剃须刀代码-
@model SkyTracker.Models.Person
<form method="post" action="Edit">
@Html.CheckBoxFor(m=> m.IsActive, new {@Value=Model.IsActive })
<input type="submit" value="Update"/>
</form>
控制器代码-
[HttpPost]
public ActionResult Edit(Person person)
{
var status = person.IsActive; //its always false.
}
无论复选框是否选中,模型 属性 始终保持为 false。
我在这里错过了什么?
你不应该那样做:
@Html.CheckBoxFor(m=> m.IsActive, new {@Value=Model.IsActive })
正确的方法是:
@Html.CheckBoxFor(m=> m.IsActive)
asp.net mvc 会自动将其标记为 checked/unchecked 取决于模型值
但是它也会相应地设置模型吗?我目前有同样的问题,无论是否选中,我的模型值始终为真:
型号:
[DisplayName("AdBlue")]
public Boolean AdBlue { get; set; }
查看:
@model Contract.CreateViewModel
...
@Html.CheckBoxFor(model => model.AdBlue, new { onChange = "GetMasterData()" })
当GetMasterData函数被触发时(定义在外部JS文件中,它会这样做:
var AdBlueSelector = document.getElementById("AdBlue").value;
但是 document.getElementById("AdBlue").value 的值始终为真,即使未选中该复选框也是如此。我的代码有什么问题?
当我向视图添加隐藏字段时,该值始终为真:
<input type="hidden" asp-for="AdBlue" />
编辑:哎呀,我刚发现错误:
document.getElementById("AdBlue").value
必须更改为
document.getElementById("AdBlue").checked;
剃须刀代码-
@model SkyTracker.Models.Person
<form method="post" action="Edit">
@Html.CheckBoxFor(m=> m.IsActive, new {@Value=Model.IsActive })
<input type="submit" value="Update"/>
</form>
控制器代码-
[HttpPost]
public ActionResult Edit(Person person)
{
var status = person.IsActive; //its always false.
}
无论复选框是否选中,模型 属性 始终保持为 false。
我在这里错过了什么?
你不应该那样做:
@Html.CheckBoxFor(m=> m.IsActive, new {@Value=Model.IsActive })
正确的方法是:
@Html.CheckBoxFor(m=> m.IsActive)
asp.net mvc 会自动将其标记为 checked/unchecked 取决于模型值
但是它也会相应地设置模型吗?我目前有同样的问题,无论是否选中,我的模型值始终为真:
型号:
[DisplayName("AdBlue")]
public Boolean AdBlue { get; set; }
查看:
@model Contract.CreateViewModel
...
@Html.CheckBoxFor(model => model.AdBlue, new { onChange = "GetMasterData()" })
当GetMasterData函数被触发时(定义在外部JS文件中,它会这样做:
var AdBlueSelector = document.getElementById("AdBlue").value;
但是 document.getElementById("AdBlue").value 的值始终为真,即使未选中该复选框也是如此。我的代码有什么问题?
当我向视图添加隐藏字段时,该值始终为真:
<input type="hidden" asp-for="AdBlue" />
编辑:哎呀,我刚发现错误:
document.getElementById("AdBlue").value
必须更改为
document.getElementById("AdBlue").checked;