我正在使用MVC 5,我发现复选框存在很多问题。
有我的代码:
<input type="checkbox" name="Item 3" value="true">
但现在甚至没有任何复选框= 已选中。那么用户怎么知道哪个已经选择了?
另一个问题是如果我检查了它,值仍然没有改变 .....那么如何确保结果是正确的呢?
更新1: 抱歉这个愚蠢的问题,我早期搜索答案,但每个人都建议使用 value =“true”。看起来像把它改成 checked =“checked”就好了。
答案 0 :(得分:2)
这只是HTML,请尝试以下内容......
<input type="checkbox" name="Item 3" checked>
或者,正如所指出的那样......
<input type="checkbox" name="Item 3" checked="checked">
答案 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;,始终返回为已检查。
<input type="checkbox" name="one" checked> Checked
<p>
<input type="checkbox" name="two"> Unchecked
&#13;