人!
我有这个ViewModel:
public class ItemViewModel {
[Display(Name="Has serie number?")]
public bool HasSerieNumber { get; set; }
public string SerieNumber { get; set; }
}
我有这个观点:
@Html.LabelFor(item => item.HasSerieNumber);
@Html.CheckBoxFor(item => item.HasSerieNumber);
@Html.TextBoxFor(item => item.SerieNumber);
这个JS代码:
$('#HasSerieNumber').click(function() {
if ($(this).is(':checked')) {
$('#SerieNumber').show();
} else {
$('#SerieNumber').hide();
}
});
当我选中HasSerieNumber复选框时,会显示SerieNumber文本框。 当我在视图中检查项目时,有没有办法触发/更改HasSerieNumber属性? 这个想法是:当我选中复选框时,属性的值将被更改,我可以通过此属性控制文本框的可见性。
谢谢!
答案 0 :(得分:0)
因为HasSerieNumber
属性绑定到复选框,所以您的代码已经执行了此操作。选中此复选框后,HasSerieNumber
将以true
的形式发送到相应的控制器操作,未选中时,false
将为@using (Html.BeginForm("SomeAction", "SomeController"))
{
@Html.LabelFor(item => item.HasSerieNumber)
@Html.CheckBoxFor(item => item.HasSerieNumber)
@Html.TextBoxFor(item => item.SerieNumber)
<button type="submit">OK</button>
}
。单击复选框时,您还可以切换相应文本框的可见性。
所以只需将其包装成一个表格:
[HttpPost]
public ActionResult SomeAction(ItemViewModel model)
{
...
}
当表单提交给以下控制器操作时:
HasSerieNumber
由于默认的模型绑定器,模型将从请求值中正确绑定 - SerieNumber
和{{1}}属性将包含值。