MVC5复选框甚至没有“值=真”

时间:2014-10-21 13:56:42

标签: c# html asp.net .net asp.net-mvc

我正在使用MVC 5,我发现复选框存在很多问题。

有我的代码:

<input type="checkbox" name="Item 3" value="true">

但现在甚至没有任何复选框= 已选中。那么用户怎么知道哪个已经选择了?

另一个问题是如果我检查了它,值仍然没有改变 .....那么如何确保结果是正确的呢?

更新1: 抱歉这个愚蠢的问题,我早期搜索答案,但每个人都建议使用 value =“true”。看起来像把它改成 checked =“checked”就好了。

4 个答案:

答案 0 :(得分:2)

这只是HTML,请尝试以下内容......

<input type="checkbox" name="Item 3" checked>

或者,正如所指出的那样......

<input type="checkbox" name="Item 3" checked="checked"> 

Fiddle

答案 1 :(得分:1)

如果要处理复选框并始终在服务器端获取值(不仅在选中时) 也考虑这个解决方案:

<input class="checkbox" type="checkbox" value="true" name="Item 3" @(condition ? "checked" : "")/>
<input type="hidden" value="false" name="Item 3"/>

value="true"表示在提交表单时将此值发送到服务器

答案 2 :(得分:1)

在MVC中,最佳做法是通过创建模型,将其发送到视图并使用razor语法实际呈现表单来处理表单。

您的模型或ViewModel:(这将在您的Models文件夹中)

namespace Project.Models
{
    public class FormViewModel
    {
        public bool Item3 { get; set; }
    }
}

然后在您的控制器中,您可以决定是否要它是真还是假:

public ActionResult Index()
{
    FormViewModel newForm = new FormViewModel() { Item3 = true; } //This will mark it as checked
    return View(newForm);
}

然后,您只需在视图中使用从控制器发送的模型

@model Project.Models.FormViewModel

这允许您使用该模型/ ViewModel中的变量创建表单

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    @Html.LabelFor(m => m.Item3)
    @Html.CheckBoxFor(m => m.Item3)
    <input type="submit" value="Save" />
}

然后,您只需使用控制器来捕获模型,处理变量并使用它执行您想要的操作。

这将使您更容易以这种方式处理数据。这个链接提供了一个关于如何使用MVC Razor创建模型,视频和处理用户输入的体面教程:Getting Started with Razor View Engine in MVC 3

答案 3 :(得分:0)

该复选框具有布尔属性&#34;已选中&#34;必须存在才能将复选框设置为选中状态。如果您想要取消选中它,请不要放置该属性。此外,设置&#34; checked = true&#34;,&#34; checked = false&#34;,&#34; checked = whatever&#34;,始终返回为已检查。

&#13;
&#13;
<input type="checkbox" name="one" checked> Checked
<p>
<input type="checkbox" name="two"> Unchecked
&#13;
&#13;
&#13;