2017-08-10 73 views
1

我试图禁用属性添加到通过@html辅助函数生成的HTML,但似乎无法得到的东西的工作,在HTML辅助的ATTRIB参数工作。我下面有什么仍然会写入禁用的HTML ...但我不能删除它,因为那么帮手不工作。有条件的HTML属性使用剃刀@html助手

我有定义的变量:

@{ var displayItem = (Model.TypeId == 100) } 

@Html.TextBox("listitem", "", new {@class = "form-control", @disabled = (@displayItem ? "" : "disabled")}) 

但因为我有列出@disabled参数,产生HTML这样的:

<input class="form-control" disabled="" id="listitem" name="listitem" type="text" value="" /> 

因为禁用列出它禁止输入。但是,除非我给它一个参数名称,否则html helper不起作用。

如何写残疾人在参数列表,以便禁用不显示在所有如果它不应该被禁用?

回答

1

您可以使用

@{ var displayItem = (Model.TypeId == 100) } 
@Html.TextBox("listitem", "", displayItem ? (object)new { @class = "form-control", disabled = "disabled" } : (object)new { @class = "form-control"}); 

@{ 
    var attributes = Model.TypeId == 100 ? (object)new { @class = "form-control", disabled = "disabled" } : (object)new { @class = "form-control"}); 
} 
@Html.TextBox("listitem", "", attributes) 

或简单if

@(if Model.TypeId == 100) 
{ 
    @Html.TextBox("listitem", "", new {@class = "form-control", disabled = "disabled" }) 
} 
else 
{ 
    @Html.TextBox("listitem", "", new {@class = "form-control" }) 
} 

注意,禁用的控件的值不会被提交,所以readonly属性可以更合适

+0

好吧,我想知道,如果有一些其他的把戏做的属性参数的建设,但我想不会。 TX。 – user1161137