我有一些客户详细信息,我只想显示有价值的字段。
例如,如果Telephone为null,则不显示它。
我目前在我的视图模型中
public string FormattedTelephone
{
get { return string.IsNullOrEmpty(this.Telephone) ? " " : this.Telephone; }
}
在我看来
@Html.DisplayFor(model => model.FormattedTelephone)
这是正常的,但是,如果字段有值,我想显示字段名称。
电话: 02890777654
如果我在视图中使用@Html.DisplayNameFor
,即使该字段为空,也会显示字段名称。
我还想用粗体设置字段名称的样式,并且不确定我在哪里设置样式 - 视图或视图模型。
答案 0 :(得分:5)
对于粗体样式,您可以在视图中使用这段代码,但当然使用外部样式表是合适的。
<style type="text/css">
.telephone{
font-weight: bold;
}
</style>
您可以在视图中检查null并有条件地显示数据:
@if (Model.FomattedTelephone != null)
{
<div class="telephone">
@Html.DisplayFor(model => model.FormattedTelephone)</div>
}
答案 1 :(得分:1)
对于样式,可以为字段名称添加一个类。
您可以创建自己的HtmlHelper,只有在字符串不为空或空时才会写入。
或者你可以像这里一样添加一个DisplayTemplates: How do I create a MVC Razor template for DisplayFor()
有关剃刀中助手的更多背景知识,请阅读以下内容 http://weblogs.asp.net/scottgu/archive/2011/05/12/asp-net-mvc-3-and-the-helper-syntax-within-razor.aspx
如果他们在您的App_Code文件夹中,请阅读此答案 Using MVC HtmlHelper extensions from Razor declarative views 您可能希望使用此方法覆盖默认帮助程序页面(并在App_Code中的辅助类中继承)
public class WorkaroundHelperPage : HelperPage
{
// Workaround - exposes the MVC HtmlHelper instead of the normal helper
public static new HtmlHelper Html
{
get { return ((WebViewPage)WebPageContext.Current.Page).Html; }
}
public static UrlHelper Url
{
get { return ((WebViewPage) WebPageContext.Current.Page).Url; }
}
}
答案 2 :(得分:1)
我会为此做一个帮手,就像这样:
using System.Web.Mvc.Html;
public static class HtmlHelpers
{
public static MvcHtmlString LabelDisplayFor<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression)
{
StringBuilder html = new StringBuilder();
string disp = helper.DisplayFor(expression).ToString();
if (!string.IsNullOrWhiteSpace(disp))
{
html.AppendLine(helper.DisplayNameFor(expression).ToString());
html.AppendLine(disp);
}
return MvcHtmlString.Create(html.ToString());
}
}
现在,当您在View中时,您可以简单地执行此操作(假设您在视图或web.config中包含命名空间):
@Html.LabelDisplayFor(model => model.FormattedTelephone)
所有它确实检查你的显示助手是不是一个空字符串,如果是,它只会附加你的LabelFor和DisplayFor,如果不是,它将返回一个空字符串。
答案 3 :(得分:1)
我通常更喜欢使用显示/编辑器模板而不是HtmlHelper。这是我用来执行完全相同任务的模板,它是为bootstrap数据列表设计的,但任何人都可以轻松调整它。
if(MvcHtmlString.IsNullOrEmpty(Html.Display(prop.PropertyName)))
关键是:
@Html.DisplayForModel("TemplateName")
它基于对象模板,因此要使用它,您需要在对象或整个模型上使用它,如
http://localhost:8087/JasperReportsIntegration/report?_repName=report2&_repFormat=pdf&_dataSource=test&_outFilename=&_repLocale=de_DE&_repEncoding=UTF-8&p_id=30