2016-05-17 45 views
0

我正在使用ASP.NET MVC webform並嘗試獲取用戶選中的複選框的值。運行應用程序時會拋出異常和服務器錯誤diplayed從控制器下面的代碼行:System.FormatException:字符串未被識別爲有效的布爾值

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

什麼讓你覺得checksupp是一個布爾值? –

回答

1

出現這種情況的,因爲你希望閱讀的價值實際上是「預付賬款」,而不是可以被轉換爲布爾值(例如「真」或「假」)。

複選框提交

複選框在默認情況下將只提交檢查的值,所以你應該不需要執行任何其他檢查,看看是否有其他的選擇進行了檢查。如果您需要處理多個可能的選擇,只需通過您的託運選項迭代,並添加它們:

[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> 
} 
+0

謝謝你這個簡單的例子,我能夠從這裏開始構建,它解決了我的問題。 – r1993

+0

當Web應用安全掃描器試圖向表單中提供一些垃圾數據時,我得到了這個錯誤。 – nmit026

1

在您的代碼:

string checksupp = collection["suppressions"]; 

它返回checksupp =「預付款」。

Convert.ToBoolean(value); //value only true or false 

,並與您的代碼是:

Convert.ToBoolean("Prepayments"); // -> error 
+1

這正確地確定了問題,但您是否也可以爲此提供可能的解決方案?提問者正在尋找解決問題的辦法。 –

相關問題