2017-02-16 46 views
0

我有2個單選按鈕,並且在「Submit」按鈕失敗後,性別值(type of string)未根據之前的選擇進行選擇。MVC @ Html.RadioButtonfor

Male @Html.RadioButtonFor(model => model.gender) 
Female @Html.RadioButtonFor(model => model.gender) 

無論單選按鈕被選中,而我的所有其他文本框保留它除了性別

+0

您沒有爲單選按鈕設置任何值。什麼是typeof屬性''gender'('string'或'enum')以及可能的值是什麼(只是「男性」和「女性」)? –

+0

這是字符串和奇怪的是,現在的價值是在我離開後,在Visual Studio上設置的。 –

回答

3

你是不是設置了單選按鈕value屬性值。如果他們沒有value,則說明「發佈」已發佈,並且在您的控制器方法中,您的模型將與gender = "on"綁定。當您返回視圖時,您的單選按鈕均不匹配"on",因此沒有選中任何一個。

更改您的視圖爲單選按鈕

<label> 
    @Html.RadioButtonFor(m => m.gender, "Male", new { id = "" }) 
    <span>Male</span> 
</label> 
<label> 
    @Html.RadioButtonFor(m => m.gender, "Female", new { id = "" }) 
    <span>Female</span> 
</label> 

注意<label>元素意味着用戶可以在相關文本中單擊選擇按鈕添加一個值,new { id = "" }刪除id屬性,否則將正在創建無效的html(重複id屬性)。

此外,你應該考慮使用enum的財產,而不是string

public enum Gender 
{ 
    Male, 
    Female 
} 

所以屬性是

public Gender Gender { get; set; } 

,並在視圖中(假設你已經包括了using語句枚舉)

<label> 
    @Html.RadioButtonFor(m => m.Gender, Gender.Male, new { id = "" }) 
    <span>@Gender.Male</span> 
</label> 

link to specification(單選按鈕和複選框)

默認/上

在獲取時,如果該元素有一個值屬性,它必須返回該屬性的值;否則,它必須返回字符串「on」。在設置時,它必須將元素的值屬性設置爲新值。