Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选中(或未选中)复选框时更改ViewModel_C#_Asp.net Mvc 3_Viewmodel - Fatal编程技术网

C# 选中(或未选中)复选框时更改ViewModel

C# 选中(或未选中)复选框时更改ViewModel,c#,asp.net-mvc-3,viewmodel,C#,Asp.net Mvc 3,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(it

伙计们

我有这个模型:

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


谢谢

因为
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>
}

由于默认的模型绑定器,
HasSerieNumber
SerieNumber
属性将包含这些值,因此模型将与请求值正确绑定。

感谢您的回答,Darin。我知道这一点。我的疑问是:有没有一种方法可以在我点击复选框时触发一些控制器方法?我的代码工作得很好,我只是想知道我是否可以在单击复选框时触发一些控制器方法。谢谢
[HttpPost]
public ActionResult SomeAction(ItemViewModel model)
{
    ...
}