【问题标题】:Showing Yes/No instead of checkbox in the View of ASP.Net MVC在 ASP.Net MVC 的视图中显示是/否而不是复选框
【发布时间】:2013-11-28 16:22:26
【问题描述】:

我对 ASP.Net / MVC 非常陌生。我创建了一个从模型填充的视图。 我正在为模型中的每个项目创建一行以显示它们的模型项目的属性/属性。

其中一个成员是 bool ,名称是 Staged。在视图中,如果为真,我想将其显示为是,如果为假,则显示为否。用户只能阅读它,所以简单的文本是/否就足够了。

我在cshtml中使用以下代码

    <td>
        @Html.DisplayFor(modelItem => item.Staged)         
   </td>

但是,这会在该位置显示一个复选框,我如何将其显示为是/否?

谢谢,

【问题讨论】:

    标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


    【解决方案1】:

    您可以像这样使用自定义 html 帮助程序扩展方法:

    @Html.YesNo(item.Staged)
    

    下面是代码:

    public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo)
    {
        var text = yesNo ? "Yes" : "No";
        return new MvcHtmlString(text);
    }
    

    通过这种方式,您可以通过一行 Razor 代码在整个站点中重复使用它。

    【讨论】:

    • 这个方法会写在视图文件里吗?
    • 不,在您的项目中创建一个新的静态类。我通常将它们放在 Extensions 文件夹中。
    • 命名空间 System.Web.Mvc { public static class HtmlHelperExtensions { public static MvcHtmlString YesNo(this HtmlHelper htmlHelper, bool yesNo) { var text = yesNo ? “是”:“否”;返回新的 MvcHtmlString(text); } } }
    • 您需要将命名空间更改为此 System.Web.Mvc 而不是 MvcApplication5.Extensions 。当它适合你时,请接受。 :)
    • 要在视图中调用辅助类,您需要调用它,例如在视图顶部添加@using 'YourNamespace.ClassName
    【解决方案2】:

    使用 Html.Raw 并根据模型值 true/false 有条件地呈现字符串

     <td>
          @Html.Raw((Model.Staged)?"Yes":"No")     
     </td>
    

    【讨论】:

      【解决方案3】:

      改变

          @Html.DisplayFor(modelItem => item.Staged)         
      

          @(item.Staged?"Yes":"No")         
      

      这是实现您的要求的最简单方法。

      【讨论】:

      • 在较新版本的 MVC 5 中,我使用了 @(Model.myField?"Yes":"No")。唯一的变化是“项目”到“模型”。还有我的字段名。
      • 如果你使用@model SomeNamespace.SomeModel 那么item会变成Model,但是如果@model IEnumerable item会变成foreach循环中的变量名。它适用于 mvc 3+
      【解决方案4】:

      在模型中,您需要创建一个新属性来执行类似的操作...

      public string ItemStagedYesNo = (item.Staged) ? "Yes" : "No";
      

      然后在视图中,做

      @Html.DisplayFor(modelItem => ItemStagedYesNo);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        • 2013-09-14
        • 2010-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多