我正在研究ASP.NET MVC webform并尝试获取用户选中的复选框的值。运行应用程序时,会抛出异常,并在控制器的以下代码行中显示服务器错误:
supp = Convert.ToBoolean(checksupp);
我在调试模式下运行visual studio,并且复选框值已经过,但显示以下异常:
字符串未被识别为有效的布尔值。
模型,视图和控制器如下所示,不确定如何解决此问题。
模型
public class WebFormXML{
private List<string> suppressions;
public WebFormXML()
{
suppressions = new List<string>();
}
public List<string> Suppressions
{
get { return suppressions; }
set { suppressions = value; }
}
{
查看
<input type="checkbox" groupname="suppressions" name="suppressions" id="supp1" value="Prepayments" runat="server" />
控制器
[HttpPost]
public ActionResult createXML(FormCollection collection)
WebFormXML wfx = new WebFormXML();
string checksupp = collection["suppressions"];
bool supp = true;
supp = Convert.ToBoolean(checksupp);
wfx.Suppressions.Add(checksupp);
答案 0 :(得分:1)
在您的代码中:
string checksupp = collection["suppressions"];
它返回checksupp =“预付款”。
Convert.ToBoolean(value); //value only true or false
并且您的代码是:
Convert.ToBoolean("Prepayments"); // -> error
答案 1 :(得分:1)
这是因为您期望阅读的价值实际上是&#34;预付款&#34;而不是可以转换为布尔值的值(例如&#34; true&#34;或&#34; false&#34;)。
复选框提交
默认情况下,复选框只会提交选中的值,因此您不需要执行任何其他检查以查看是否已选中其他选项。如果您需要处理多个可能的选择,只需遍历已检查的选项并添加每个选项:
[HttpPost]
public ActionResult createXML(FormCollection collection)
{
// Build your WebForm object
WebFormXML wfx = new WebFormXML();
// Get your suppressed items
var suppressions = collection["suppressions"].Split(',');
// Add each of them to your object
wfx.Suppressions.AddRange(suppressions);
// Other code here
}
示例强>
您可以看到very basic working example of this demonstrated here,如下所示:
<强>控制器强>
[HttpPost]
public ActionResult Index(FormCollection collection)
{
// Get your suppressed elements (they will come in as a comma-delimited string)
var suppressions = collection["suppressions"];
return Content("Properties: [" + suppressions + "] were suppressed.");
}
查看强>
@using (Html.BeginForm())
{
<b>A</b>
<input type="checkbox" groupname="suppressions" name="suppressions" value="A" />
<b>B</b>
<input type="checkbox" groupname="suppressions" name="suppressions" value="B" />
<b>C</b>
<input type="checkbox" groupname="suppressions" name="suppressions" value="C" />
<br />
<button type="submit">Check Suppressions</button>
}