0

伙计们!

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

谢谢!

4

1 回答 1

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)
{
    ...
}

由于默认模型绑定器,模型将从请求值正确绑定 -HasSerieNumberSerieNumber属性将包含这些值。

于 2012-09-24T10:47:14.963 回答