不使用 LabelFor 显示空属性的标签?

发布于 2024-11-11 16:27:10 字数 153 浏览 0 评论 0原文

我正在使用带有 Razor 的 MVC3,并且我有一个模型,其中有很多有时为空的属性。 除了自定义 htmlHelper 或在每个 LabelFor/DisplayFor 对的视图中使用 if/then 之外,是否有办法不显示空或 null 属性的 LabelFor/DisplayFor ?

I'm using MVC3 w/ Razor and I have a model that has quite a few properties that are sometimes empty.
Other than a custom htmlHelper, or using an if/then in the view for every LabelFor/DisplayFor pair, is there a way to not display the LabelFor/DisplayFor for a property that is empty or null?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情定在深秋 2024-11-18 16:27:10

不......您需要上述解决方案或其他视图模型。对不起!

No.... You need the above mentioned solutions or additional view models. Sorry!

明月夜 2024-11-18 16:27:10

我创建了自己的助手:LabelAndDisplayFor 检查空/空,然后选择显示该字段。

    public static MvcHtmlString LabelAndDisplayFor<tModel, tValue>(this HtmlHelper<tModel> html, System.Linq.Expressions.Expression<Func<tModel, tValue>> field,
        bool hideIfEmpty = false) {

        if (hideIfEmpty) {
            var v = field.Compile()(html.ViewData.Model);
            if (v == null || string.IsNullOrWhiteSpace(v.ToString())) {
                return MvcHtmlString.Empty;
            }
        }

        StringBuilder result = new StringBuilder();
        result.Append("<div class='display-line'>");
        result.Append("<div class='display-label'>");
        result.Append(html.LabelFor(field));
        result.Append("</div>");

        // ... etc ...

I created my own helper: LabelAndDisplayFor that checks for null/empty and then chooses to display the field.

    public static MvcHtmlString LabelAndDisplayFor<tModel, tValue>(this HtmlHelper<tModel> html, System.Linq.Expressions.Expression<Func<tModel, tValue>> field,
        bool hideIfEmpty = false) {

        if (hideIfEmpty) {
            var v = field.Compile()(html.ViewData.Model);
            if (v == null || string.IsNullOrWhiteSpace(v.ToString())) {
                return MvcHtmlString.Empty;
            }
        }

        StringBuilder result = new StringBuilder();
        result.Append("<div class='display-line'>");
        result.Append("<div class='display-label'>");
        result.Append(html.LabelFor(field));
        result.Append("</div>");

        // ... etc ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文