2016-11-11 81 views
-1

這是我用過的RadioButton代碼:MVC單選按鈕總是傳遞假值

@Html.RadioButtonFor(model => model.A, new { @class = "radio-inline", @checked = "checked", id = "A" }, "Indicator") 
@Html.Label("Active") 
@Html.RadioButtonFor(model => model.A, new { @class = "radio-inline", @checked = "checked", id = "B" }, "Indicator") 
@Html.Label("InActive") 

這是模態

private bool a; 
public bool A 
{ 
    get 
    { 
     return a; 
    }  
    set 
    { 
     a= value; 
    } 
} 
+1

你是什麼型號?你沒有給單選按鈕一個值,所以他們不會發布任何東西(並看看你的代碼生成的HTML) –

+0

在這兩種情況下你使用model => model.A –

+0

得到了一些錯誤,編號爲:( –

回答

2

RadioButtonFor()的第二個參數是值,和第3是htmlAttributes所以你代碼正在生成

<input length="9" id="A" name="A" type="radio" value="{ class = radio-inline, checked = checked, id = A }" /> 

value屬性需要爲truefalse才能綁定到bool(並注意無效的length="9"屬性是因爲「指標」中有9個字符)。

另外,不要嘗試設置checked屬性 - 該方法根據屬性的值正確設置。然後創建一個與按鈕無關的<label>元素(單擊它們將設置焦點)。

你的代碼需要

<label> 
    @Html.RadioButtonFor(model => model.A, true, new { @class = "radio-inline", id="" }) 
    <span>Active</span> 
</label> 
<label> 
    @Html.RadioButtonFor(model => model.A, false, new { @class = "radio-inline", id="" }) 
    <span>InActive</span> 
</label> 

您也可以簡化模型只使用

public bool A { get; set; }