加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如果在剃刀视图中使用ELSE帮助器?

发布时间:2020-12-16 07:06:31 所属栏目:asp.Net 来源:网络整理
导读:我想在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].Typ
我想在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>

解决方法

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

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

你不会测试DisplayFor的值的原因是它返回一个MvcHtmlString,而不仅仅是一个简单的类型,如字符串或int.如果你有一天发现需要与DisplayFor进行比较,你可以做这样的事情(希望这会让一切变得更有意义):

@if (Html.DisplayFor(m => m[i].Type) == new MvcHtmlString("Info_Text"))

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读