获取checkBox服务器端的值

时间:2012-12-10 12:47:05

标签: asp.net asp.net-mvc

我想得到一个复选框的值...我的复选框显示数据库的值“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"
}

3 个答案:

答案 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”)