我有一个包含2个字段的表单,一个下拉列表和一个复选框。我有一切正常工作,但我不能因为某些原因获得复选框的值,如果选中它是我的代码..
[HttpPost]
public ActionResult view(string pick)
{
switch (pick)
{
case "Deny":
// capture checkbox value here
break;
case "Accept":
// capture checkbox value here
break;
}
return View();
}
这是我的观点
@using (Html.BeginForm("view", "grouprequest", FormMethod.Post, new {}))
{
@Html.DropDownList("pick", new SelectList(new List<Object>{
new{ Text ="Accept", Value= "Accept"},new{ Text ="Deny", Value= "Deny"}}, "Value", "Text"), new {})
<input type="submit" name="work" id="work" value="Update" style="font-size:16px" />
foreach (var item in Model)
{
<input type="checkbox" id="@item.grouprequestID" name="@item.grouprequestID" value="@item.grouprequestID" />
}
}
基本上,下拉列表有两个选项,分别是接受和拒绝我可以通过 SWITCH-case 来捕获用户选择的那个控制器现在如何捕获复选框的值?如果您注意到复选框有一个名为 @groupRequestID 的变量,那么每个复选框都有不同的唯一值,如1,2,3等。任何帮助都将非常感谢!!
模特
public class grouprequest
{
[Key]
public int grouprequestID { get; set; }
public int? profileID { get; set; }
public int? registrationID { get; set; }
public DateTime expires { get; set; }
public int? Grouplink { get; set; }
}
答案 0 :(得分:17)
发布到服务器时的复选框有点奇怪。
如果选中一个框,浏览器将发送name=value
,如
<input type="checkbox" name="name" value="value" />
但如果复选框未,则服务器不会发送任何内容。
<input type="checkbox" name="Check1" id="Checks1" value="Hello" checked="checked"/>
<input type="checkbox" name="Check1" id="Checks1" value="Hello1" />
<input type="checkbox" name="Check1" id="Checks1" value="Hello2" />
将导致Check1 = Hello
这意味着如果所有复选框都相关,那么命名它们将填充ActionMethod的相同属性。如果该属性是枚举,则它将仅包含已检查的属性。
如果你认为有这个:
<input type="checkbox" name="MyValues" value="1" checked="checked"/>
<input type="checkbox" name="MyValues" value="2" />
<input type="checkbox" name="MyValues" value="3" />
这是你的控制器动作方法:
public ActionMethod MyAction(IEumerable<int> myValues)
myValues
变量将如下所示:
myValues[0] == 1
您还应注意,如果您使用的是Html
助手扩展程序:
@Html.CheckBoxFor(m => m.MyValue)
如果MyValue
是bool
,则扩展程序将创建checkbox
输入标记以及具有相同名称的hidden
输入标记,这意味着将始终传递值进入控制器方法。
希望这有帮助。