如果用剃刀视图中的html助手?

Edw*_*d.K 5 asp.net-mvc razor asp.net-mvc-4

我想在Razor视图中使用IF ELSE语句.是否可以使用IF(html.helper)然后做一些事情?还是有什么建议吗?

@using (Html.BeginForm())
{
    <table>

            @for (int i = 0; i < Model.Count; i++)
            {
                <tr>
                    <td>
                        @Html.HiddenFor(m => m[i].Question_ID)
                        @Html.HiddenFor(m => m[i].Type)
                        @Html.DisplayFor(m => m[i].Question)
                    </td>
                </tr>
                <tr>
                    @if(@Html.DisplayFor(m=> m[i].Type =="Info_Text") **
                    {
                        <td>
                              //DO NOTHING
                        </td>                
                    }
                    else
                    { 
                    <td>
                        @Html.EditorFor(m => m[i].Answer)
                    </td>
                    }
                </tr>
            }

    </table>
Run Code Online (Sandbox Code Playgroud)

Dav*_*ard 5

正如我在评论中提到的,您可以m[i].Type直接测试其值:

@if (m[i].Type == "Info_Text") {
  <td></td>
} else {
  <td>@Html.EditorFor(m => m[i].Answer)</td>
}
Run Code Online (Sandbox Code Playgroud)

你不会测试DisplayFor它的价值的原因是它返回一个MvcHtmlString,而不仅仅是一个简单的类型,如stringint.你可以做一些这样的事情,如果你发现需要比较DisplayFor一天(并希望这使得它更有意义):

@if (Html.DisplayFor(m => m[i].Type) == new MvcHtmlString("Info_Text"))
Run Code Online (Sandbox Code Playgroud)

由于您正在学习MVC,您可能还对如何自定义EditorFor帮助程序以自动执行此操作感兴趣:http://www.hanselman.com/blog/ASPNETMVCDisplayTemplateAndEditorTemplatesForEntityFrameworkDbGeographySpatialTypes.aspx