使用razor的条件Html内联样式属性

时间:2017-08-10 19:50:18

标签: c# asp.net-mvc razor

使用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>

1 个答案:

答案 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" />