使用Razor,在View
的以下项目的迭代中,如果CustName
不为空,我们如何才能readonly
输入CustName
@model ABCTest.Models.ViewModels.MyViewModel
...
<table>
@for (int i=0; i<Model.CuttomersOrders.Count(); i++)
{
<td>...</td>
...
<td>
@Html.EditorFor(c => c.CuttomersOrders[i].CustName)
</td>
...
}
...
</table>
答案 0 :(得分:1)
有条件地使用相关的htmlAttributes重载值调用helper方法。
EditorFor
辅助方法没有带有htmlAttributes字典的重载。因此,您可以使用TextBoxFor
辅助方法。
@for(int i=0; i<Model.CuttomersOrders.Count(); i++)
{
<tr>
<td>
@if (!String.IsNullOrEmpty(Model.CuttomersOrders[i].CustName))
{
@Html.TextBoxFor(c => c.CuttomersOrders[i].CustName,new { @readonly=true})
}
else
{
@Html.TextBoxFor(c => c.CuttomersOrders[i].CustName)
}
</td>
</tr>
}
请记住,readonly
属性的存在将使输入元素只读而不管值。所以基本上下面的两行将呈现一个只读输入元素。
<input readonly="False" type="text" value="Java" />
<input i readonly="true" type="text" value="Java" />