alguna manera de hacer que sea más eficiente?
Sí, claro, el uso de modelos de vista y deshacerse de la ViewBag
:
public string FormattedName
{
get { return string.IsNullOrEmpty(this.Name) ? " " : this.Name; }
}
y luego en su opinión inflexible:
@Html.DisplayFor(x => x.FormattedName)
o si prefieren:
@Model.FormattedName
Otra posibilidad es escribir una ayuda personalizada ER:
public static class HtmlExtensions
{
public static IHtmlString Format(this HtmlHelper html, string data)
{
if (string.IsNullOrEmpty(data))
{
return new HtmlString(" ");
}
return html.Encode(name);
}
}
y luego en su opinión:
@Html.Format(Model.Name)
o si necesita para mantener el ViewCrap tendrá que vivir con un molde (lo siento, .NET no admite el método de extensión de despacho en parámetros dinámicos):
@Html.Format((string)ViewBag.Name)
tengo que advertir sobre una cosa en mi respuesta. Si ViewBag.Name es "", obtendrá el resultado como "" no . Es porque el ?? el operador solo funciona para cadenas nulas y no vacías. – VJAI