0

我想获取复选框的值...我的复选框显示数据库的值“true”或“false”,用​​户可以更改值(如果他不喜欢它)我每次得到值 false

看法:

   <%if ((Boolean)ViewData["Statistik3"])
   {%>                            
        <input type="checkbox" name="Statistik3" value="true" checked= "checked"/>
   <%}
    else
   { %>
       <input type="checkbox" name="Statistik3" value="false"/>  <%--</input>--%>
   <%} %>

控制器 C#

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Formular(string button, string decision1, FormEntries entries )
{
    entries.Statistik3 ? "Yes" : "No"
}
4

3 回答 3

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并定义一个视图模型,该模型将包含该视图所需的所有信息,然后使用强类型版本的 helper: Html.CheckBoxFox

于 2012-12-10T13:04:01.053 回答
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")

于 2012-12-10T16:11:32.680 回答
0

复选框是纯布尔类型;value 属性将被忽略,并且仅在存在未选中属性的情况下。您是否完全绑定到数据模型?尝试以下操作:

<%if ((Boolean)ViewData["Statistik3"])
{%>                            
    <input type="checkbox" name="Statistik3"  id="Statistik3" checked="checked"/>
<%}
else
{ %>
   <input type="checkbox" name="Statistik3" id="Statistik3"/>  <%--</input>--%>
<%} %>

然后在返回时测试布尔值。

希望有帮助。

于 2012-12-10T13:07:04.503 回答