MVC 5 Razor 视图未将 bool 绑定到输入

Posted

技术标签:

【中文标题】MVC 5 Razor 视图未将 bool 绑定到输入【英文标题】:MVC 5 Razor view not binding bool to input 【发布时间】:2013-12-10 15:29:00 【问题描述】:

我有一个 razor 视图(Framework 4.5,MVC 5)和一个 html 输入 type=checkbox,其值等于模型布尔值,但它绑定“值”而不是 true 或 false。

这是我的代码:

for (int index = 0; index < Model.Item1.Locations.Length; index++)
        
            WSTupleOfInt32StringStringBoolean location = Model.Item1.Locations[index];
                <div class="editor-field">
                    <input id="@string.Format("presentation.ServiceInfoes[1].Locations[0].Key", index, Model.Item2)" type="checkbox" value="@location.ThirdValue" name="@string.Format("presentation.ServiceInfoes[1].Locations[0].ThirdValue", index, Model.Item2)" />
                </div>
                <div class="editor-label">
                    <label for="@string.Format("presentation.ServiceInfoes[1].Locations[0].Key", index, Model.Item2)">@location.FirstValue</label>
                    @if (!string.IsNullOrEmpty(location.SecondValue))
                    
                        <a href="@string.Format("//maps.google.com/?q=0", location.SecondValue)" target="_blank"><img  src="@string.Format("//maps.google.com/maps/api/staticmap?center=0&markers=color:blue|0&zoom=15&size=64x64&sensor=false", location.SecondValue)" /></a>
                    
                </div><br />
        

location.ThirdValue 是布尔属性,调试属性没问题.. 但在 HTML 中我得到value="value" 而不是value="false"

发生了什么事?

【问题讨论】:

【参考方案1】:

看到这个Answer

基本上你想用HTML.CheckBoxFor(model =&gt; model.booleanProperty)

【讨论】:

在我的模型上,我有 public bool NewContact get; '内部'设置;这使得“NewContact”即使使用 CheckboxFor 也总是错误的。删除内部,这有效。赞成。【参考方案2】:

这样做

<input id="@string.Format("presentation.ServiceInfoes[1].Locations[0].Key", index, Model.Item2)" type="checkbox" @(location.ThirdValue ? "checked" : "") name="@string.Format("presentation.ServiceInfoes[1].Locations[0].ThirdValue", index, Model.Item2)" />

该值未设置复选框是否选中,值具有不同的功能。例如,如果您将 value 设置为 'test' 并选中复选框,当您提交表单时,您会看到提交的变量的值将是 'test',而不是 true;

你可以用它做一些很酷的事情。例如,您的表单上有 3 个复选框。它们都具有相同的名称,但值不同。当您提交表单时,您得到的结果将是逗号分隔的字符串,带有选中复选框的值;

【讨论】:

以上是关于MVC 5 Razor 视图未将 bool 绑定到输入的主要内容,如果未能解决你的问题,请参考以下文章

使用 MVC Razor 语法检查视图模型属性在 Javascript 中是不是具有值

在 MVC 5 Razor 视图中调用 JavaScript 函数

如何绑定到列表作为 MVC 3 Razor 中模型上的属性?

在 ASP.NET MVC 5 中从数据库加载 Razor 视图

C# MVC 4 RAZOR - JSON 使用 @foreach 从控制器返回列表到视图

MVC3 Razor - 模型和视图