2011-06-14 22 views
1

我从视图模型对象的数组构建一个屏幕,包含三个方面:手动绑定MVC模型,而无需HTML帮手复选框

public class StartViewModel { 

     public string Id{ get; set; } 

     public string Name { get; set; } 

     public bool Accept { get; set; } 
    } 

我则试图将其绑定到我的观点,像这样:

<input type="hidden" name="StartRequests[<%: i.ToString() %>].Name" value="<%: StartRequests.Name %>" /> 
<input type="hidden" name="StartRequests[<%: i.ToString() %>].Id" value="<%: StartRequests.Id%>" /> 

然后我想要将Accept标志绑定到复选框。我明白复选框缺少一个名称属性,所以我不能立即使用它,并且我明白Html.CheckBoxFor将生成第二个隐藏字段来存储值。所以这是我的问题。

我没有能力使用JavaScript。我需要配置这个复选框来有效地调整ViewModel中的值,但我不知道如何做到这一点。 Html.CheckBox助手如何填充它生成的隐藏字段?我认为它是用javascript做到的。有人能帮助我理解一种方法来做到这一点吗?我仍在研究模型绑定背后的想法。

+0

Html Helpers不使用Javascript,除了可能用于客户端验证(将其作为Javascript注入到页面中)。 Html Helpers是纯服务器端代码,使用字符串帮助器对象将HTML元素和属性缝合在一起。如果你不能使用Javascript,并且你正在尝试做的事情需要客户端行为(即在提交之前的浏览器中),那么你运气不好。 – 2011-06-14 20:45:42

+0

鉴于此,为什么'Html.CheckBoxFor'出来了? – 2011-06-14 20:48:52

回答

0

对于以下模型:

public class StartViewModel { 

    public string Id{ get; set; } 

    public string Name { get; set; } 

    public bool Accept { get; set; } 
} 

//-> Accept = false. 

解决办法: 更改public bool Accept { get; set; }public string Accept { get; set; }

提交时,如果复选框被选中, “接受” 值= “上”。您可以通过这种方式检测选中的值。