1

我正在尝试使用以下代码从模型中显示剃刀视图中的值

@Html.LabelFor(m=>m.testId, Model.testId)

其中显示来自 DB的testId的值,呈现为

<label for="LeadTimeText_DTD">12</label>

但是如果 testID 为空,我会在标签显示中获取列名

<label for="LeadTimeText_DTD">testId</label>

如果testID为空,我不想在下面显示任何内容

<label for="LeadTimeText_DTD"></label>

我还有其他方法可以使用 HTML 助手吗?我做错了什么?

4

4 回答 4

0

If u want Html helper only then you have just two options : 1. either use Custom HtmlHelper or 2. use if/then condition for your Helper

于 2013-09-28T12:51:25.657 回答
0

而不是使用@Html.LabelFor尝试使用@Html.DisplayFor助手!

编辑:那么我猜你只需要检查你的 Model.testId 值是否为 null

@if(Model.Id != null)
{
    Html.LabelFor(m=>m.testId, Model.testId)
}
else
{
    Html.LabelFor(m=>m.testId, string.Empty)
}

希望这可以帮助!

于 2013-09-28T10:00:10.043 回答
0

我创建了这个扩展方法来强制标签的值是否为空。

    public static MvcHtmlString LabelForWithId<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
    {
        var id = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId(ExpressionHelper.GetExpressionText(expression));

        if (htmlAttributes != null)
        {
            var tag = new TagBuilder("label");
            tag.MergeAttributes(HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes) as IDictionary<string, object>);
            tag.Attributes.Add("for", id);
            tag.Attributes.Add("id", id);
            tag.SetInnerText(helper.DisplayFor(expression).ToString());

            return MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
        }
        else
        {
            return MvcHtmlString.Create(string.Format("<label id=\"{0}\" for=\"{0}\">{1}</label>", id, helper.DisplayFor(expression)));
        }
    }
于 2014-12-15T15:43:51.350 回答
0

使用 @Html.DisplayFor 可能是一个不错的选择,而使用自定义 html 帮助程序可能是一种过度杀戮。

在 MVC 项目中,我们使用了很多自定义扩展方法,我经常使用的一种扩展方法如下

public static class CommonCustomExtensions
{
 public static string GetTrimValue(this string value)
        {
            // avoid the issue of string being null
            return string.IsNullOrEmpty(value) ? string.Empty : value.Trim();
        }
}

您可以按如下方式使用 LabelFor html 帮助器来实现相同的结果,顺便说一下,这种扩展方法在控制器和帮助器中非常方便,因为它可以优雅地处理 null

Html.LabelFor(m=>m.testId, Model.testId.GetTrimValue())
于 2019-01-10T23:13:55.213 回答