根据模型中的枚举设置选中单选按钮

时间:2017-01-17 19:31:04

标签: c# asp.net-mvc

我一直在玩各种方法来根据模型中的枚举在单选按钮上设置checked属性,但似乎无法正确使用...

@foreach (LeadPriceAdjustmentItem state in Model.LeadPriceAdjustmentList)
{
....

<input 
    type="radio" 
    name="direction_@state.StateCode" 
    id="direction_@state.StateCode" 
    @if (state.Direction == LeadPriceAdjustmentDirection.Up) { checked } /> Up

}

在最后}我被告知:

  

预期{

很确定我错过了一些明显的东西,但我没有发现它。

3 个答案:

答案 0 :(得分:2)

在视图的html中编写服务器端代码的语法并不完全正确,尽管你已经足够接近了,你需要这样写:

<input 
    type="radio" 
    name="direction_@state.StateCode" 
    id="direction_@state.StateCode" 
    @(state.Direction == LeadPriceAdjustmentDirection.Up ? "checked='checked'" : "")/>

答案 1 :(得分:2)

<input type="radio"
    name="direction_@state.StateCode"
    id="direction_@state.StateCode"
    @(state.Direction == LeadPriceAdjustmentDirection.Up ? "checked" : "") /> Up

答案 2 :(得分:2)

剃刀并不完美。它像你一样工作&#34;思考&#34;它应该工作大部分时间。但是,在这种情况下,您需要添加其他语法来识别&#34;已检查&#34;或&#34;检查=&#39;检查&#39;&#34;作为一个字符串。最简单的方法是

<input 
    type="radio" 
    name="direction_@state.StateCode" 
    id="direction_@state.StateCode" 
    @(state.Direction == LeadPriceAdjustmentDirection.Up ? <text>checked='checked'</text> ? "")/>

<input 
    type="radio" 
    name="direction_@state.StateCode" 
    id="direction_@state.StateCode" 
    @(state.Direction == LeadPriceAdjustmentDirection.Up ? <text>checked</text> ? "")/>

此外,您可以使用Html.Raw

<input 
    type="radio" 
    name="direction_@state.StateCode" 
    id="direction_@state.StateCode" 
    @(state.Direction == LeadPriceAdjustmentDirection.Up ? Html.Raw("checked='checked'"); ? "")/>

基本上,Razor正试图解析&#34;检查&#34; string作为服务器端命令。你需要告诉它它只是原始内容。