我想得到一个复选框的值...我的复选框显示数据库的值“true”或“false”,用户可以更改值(如果他不喜欢它) 我每次都得到值假
查看:
<%if ((Boolean)ViewData["Statistik3"])
{%>
<input type="checkbox" name="Statistik3" value="true" checked= "checked"/>
<%}
else
{ %>
<input type="checkbox" name="Statistik3" value="false"/> <%--</input>--%>
<%} %>
Controller C#
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Formular(string button, string decision1, FormEntries entries )
{
entries.Statistik3 ? "Yes" : "No"
}
答案 0 :(得分:1)
尝试使用服务器端Html帮助程序渲染复选框。不要像在视图中那样对输入元素进行硬编码,因为这会导致可怕的意大利面条代码。因此,通过简单调用Html.CheckBox
帮助器来替换您显示的整个代码,这将帮助渲染正确的输入元素:
@Html.CheckBox("Statistik3")
现在您要发布的控制器操作可以采用具有相同名称的布尔参数:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Formular(bool statistik3, string button, string decision1, FormEntries entries)
{
// you could use the statistik3 boolean argument to determine
// whether the user checked or not the checkbox
}
我要做的下一个改进是完全摆脱ViewData
并定义一个视图模型,它将包含该视图所需的所有信息,然后使用强类型版本的帮助器:{{1} }。
答案 1 :(得分:0)
复选框是仅限布尔类型; value属性将被忽略,并且只有在缺少checked属性的情况下才会被忽略。你是否完全依赖于数据模型?请尝试以下方法:
<%if ((Boolean)ViewData["Statistik3"])
{%>
<input type="checkbox" name="Statistik3" id="Statistik3" checked="checked"/>
<%}
else
{ %>
<input type="checkbox" name="Statistik3" id="Statistik3"/> <%--</input>--%>
<%} %>
然后在返回时测试一个布尔值。
希望有所帮助。
答案 2 :(得分:0)
您需要确保Checkbox包含在表单元素中。像这样的东西
<% using(Html.BeginForm("Formular")){
<%if ((Boolean)ViewData["Statistik3"])
{%>
<input type="checkbox" name="Statistik3" value="true" checked= "checked"/>
<%}
else
{ %>
<input type="checkbox" name="Statistik3" value="false"/> <%--</input>--%>
<%} %>
<%} %>
如上所述,您应该使用@ Html.CheckBox(“Statistik3”)