选中(或不选中)复选框时更改ViewModel

时间:2012-09-24 10:32:18

标签: c# asp.net-mvc-3 viewmodel

人!

我有这个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属性? 这个想法是:当我选中复选框时,属性的值将被更改,我可以通过此属性控制文本框的可见性。

谢谢!

1 个答案:

答案 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}}属性将包含值。