asp.net-mvc-3 - 如何在 Razor 中创建 else if 语句?

标签 asp.net-mvc-3 razor

我正在尝试在表格中显示一些行。根据用户组, View 应该显示不同的标记。管理员可以删除行,但版主只能将它们标记为可见或不可见。

如何在 Razor 中编写正确的 if else 语句?

页面显示正确,但页面标题是解析错误

这是我的代码:

@model MvcApplication3.Models.ViewModels.New.Question.MatrixRows

@{
    bool visible = Model.Visible;
}

<tr>
    <td>
    @if(visible) 
        {
        @Html.TextBoxFor(cn => Model.Row_Number, new { @class = "row required digits", size = 1 })
        }
    @if (!visible)
        {
        @Html.TextBoxFor(cn => Model.Row_Number, new { @class = "row required digits", size = 1, disabled = "disabled" })
        }
    </td>
    <td>
    @if(visible) 
        {
            @Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45 })
        }
    @if (!visible)
    {
        @Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45, disabled = "disabled" })
    }
    </td>
    <td>
        @if (HttpContext.Current.User.IsInRole("Administrator"))
        {
            @Html.HiddenFor(x => x.Delete, new { @class = "mark-for-delete" })
            @Html.LinkToRemoveNestedForm("Slet", "tr", "input.mark-for-delete")    
        }
        @if (HttpContext.Current.User.IsInRole("Moderator"))
        {
            @Html.HiddenFor(x => x.Visible, new { @class = "mark-for-visible" })
            @Html.LinkToDisableNestedForm("Deaktiver", "tr", "input.mark-for-visible")    
        }
        @Html.HiddenFor(id => Model.Row_Id)
    </td>
</tr>

最佳答案

标题有解析错误,因为您没有设置标题:

@{
    ViewBag.Title = "Home Page";
}

现在对于 else 语句,不要使用回 @句法:
@if(visible) 
{
    Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45 })
}
else
{
    Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45, disabled = "disabled" })
}

您正在检查一个 bool 值,您只需要一个 else。也适用于 else if ,它的工作原理相同。

只需执行以下操作即可进一步简化您的代码:
@Html.TextBoxFor(bs => Model.Row_Description, new { @class = "rowdesc", size = 45, disabled = visible ? "" : "disabled" })

因为无论如何您都在显示相同的代码,只需根据值更改属性即可。对我来说,这变得更具可读性。

关于asp.net-mvc-3 - 如何在 Razor 中创建 else if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8197680/

相关文章:

asp.net-mvc-3 - Razor Engine - 如何根据不同条件呈现不同的 body 标签?

ajax - 根据从父下拉列表中选择的内容填充子下拉列表

c# - 将 Razor Web App 作为中间件插入 Web Api 元素时,不会加载 css

asp.net-mvc - ASP.NET MVC Json DateTime序列化转换为UTC

c# - MVC3 Controller 变量可访问性

asp.net-mvc - 如何在 MVC 3 Razor 中将列表绑定(bind)为模型上的属性?

c# - LINQ 与 @Html.DropDownList 不同

jquery - 具有多个触发器的 Ajax.ActionLink

c# - 应用程序启动时的种子数据库 - ASP MVC 3 和 EF

asp.net - @Html.DropDownList Razor View 中的问题?