2013-08-30 72 views
2

我要綁定的布爾屬性來隱藏的輸入的控制器,但輸出的HTML代碼是錯誤布爾模型綁定問題4

代碼如下:

public class TestModel 
{ 
    public bool IsOk { get; set; } 
    public bool IsSuccess { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new TestModel { IsOk = false, IsSuccess = true }); 
    } 
} 

<h2>Index</h2> 
<p>@Model.IsOk</p> 
<p> 
    <input type="hidden" value="@Model.IsOk" /> 
</p> 
<p> 
    <input type="hidden" value="@Model.IsSuccess" /> 
</p> 

HTML輸出

<h2>Index</h2> 
<p>False</p> //works 

<p> 
    <input type="hidden" /> //where is value? 
</p> 

<p> 
    <input type="hidden" value="value" /> //wath's this? 
</p> 

但是,如果我使用ToString(),以上所有的效果很好,那麼它是我的錯誤?

+4

的可能重複[爲什麼我隱藏輸入文字:價值=「值」,而不是真/假?](http://stackoverflow.com/questions/13455270/why-is-my-hidden- input-writing-value-value-instead-of-true-false) – nemesv

回答

3

在HTML,當你有其用作開/關或真/假開關你刪除一個屬性屬性爲off/false時添加屬性,並在屬性爲true時添加與屬性名稱相同的屬性。 Razor爲您提供了您已經體驗過的功能。

也許你打算在視圖中使用Html.HiddenFor?如您所願

<p> 
    @Html.HiddenFor(m => m.IsOk) 
</p> 
<p> 
    @Html.HiddenFor(m => m.IsSuccess) 
</p> 

這將產生這個HTML,你必須value="False"value="True"

<p> 
    <input data-val="true" data-val-required="The IsOk field is required." 
     id="IsOk" name="IsOk" type="hidden" value="False" /> 
</p> 
<p> 
    <input data-val="true" data-val-required="The IsSuccess field is required." 
     id="IsSuccess" name="IsSuccess" type="hidden" value="True" /> 
</p> 

此外,模型綁定就能往返您查看模型屬性。

2

HTML屬性需要字符串對象 它不會自動轉換

所以,你必須使用ToString()

0

請試試這個。

$('#controlId').is(":checked"); 
+0

此語法用於通過jquery綁定布爾值時的複選框控件。 –