Asp.net mvc Html.lablefor在案例模型中显示空而不是列名。Columnname值为NULL
我试图用下面的代码在razor视图中显示模型中的值Asp.net mvc Html.lablefor在案例模型中显示空而不是列名。Columnname值为NULL,asp.net-mvc,html-helper,Asp.net Mvc,Html Helper,我试图用下面的代码在razor视图中显示模型中的值 @Html.LabelFor(m=>m.testId, Model.testId) 它显示数据库中的testId值,该值呈现为 <label for="LeadTimeText_DTD">12</label> 12 但是如果testID为空,我将在标签显示中获取列名 <label for="LeadTimeText_DTD">testId</label> testId 如果test
@Html.LabelFor(m=>m.testId, Model.testId)
它显示数据库中的testId值,该值呈现为
<label for="LeadTimeText_DTD">12</label>
12
但是如果testID为空,我将在标签显示中获取列名
<label for="LeadTimeText_DTD">testId</label>
testId
如果testID为空,我不想显示下面的内容
<label for="LeadTimeText_DTD"></label>
有没有其他方法可以使用HTML helper?我做错了什么?不要使用
@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)
}
希望这有帮助 如果你只想要Html助手,那么你只有两个选择:1。任用
或2。为助手使用if/then条件我创建了此扩展方法,以强制标签的值是否为空
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)));
}
}
public static MvcHtmlString LabelForWithId(此HtmlHelper帮助程序、表达式、对象htmlAttributes)
{
var id=helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldDid(ExpressionHelper.GetExpressionText(expression));
如果(htmlAttributes!=null)
{
var标记=新标记生成器(“标签”);
tag.MergeAttributes(作为IDictionary的HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes));
tag.Attributes.Add(“for”,id);
tag.Attributes.Add(“id”,id);
SetInnerText(helper.DisplayFor(expression.ToString());
返回MvcHtmlString.Create(tag.ToString(TagRenderMode.Normal));
}
其他的
{
返回MvcHtmlString.Create(string.Format({1}),id,helper.DisplayFor(expression));
}
}
使用@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())
不,我需要标签,因为我正在使用jquery在标签和文本框之间切换。还有其他方法吗?