我在一个有效的 MVC 视图中有这段代码,但它看起来像很多代码来实现这个简单的事情。有什么办法让它更有效率吗?
@if (string.IsNullOrEmpty(ViewBag.Name))
{
@:
}
else
{
@:ViewBag.Name
}
我在一个有效的 MVC 视图中有这段代码,但它看起来像很多代码来实现这个简单的事情。有什么办法让它更有效率吗?
@if (string.IsNullOrEmpty(ViewBag.Name))
{
@:
}
else
{
@:ViewBag.Name
}
@(ViewBag.Name ?? Html.Raw(" "))
有什么办法让它更有效率吗?
是的,当然,使用视图模型并摆脱ViewBag
:
public string FormattedName
{
get { return string.IsNullOrEmpty(this.Name) ? " " : this.Name; }
}
然后在您的强类型视图中:
@Html.DisplayFor(x => x.FormattedName)
或者,如果您愿意:
@Model.FormattedName
另一种可能性是编写自定义助手:
public static class HtmlExtensions
{
public static IHtmlString Format(this HtmlHelper html, string data)
{
if (string.IsNullOrEmpty(data))
{
return new HtmlString(" ");
}
return html.Encode(name);
}
}
然后在你看来:
@Html.Format(Model.Name)
或者,如果您需要保留 ViewCrap,您将不得不接受强制转换(抱歉,.NET 不支持动态参数的扩展方法分派):
@Html.Format((string)ViewBag.Name)