System.FormatException:String未被识别为有效的布尔值

时间:2016-05-17 16:22:45

标签: c# asp.net asp.net-mvc

我正在研究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);

2 个答案:

答案 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
}

示例

enter image description 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>
}