C# 从ASP.NET MVC扩展函数返回HTML
我有一个ASP.NETMVC应用程序。我的应用程序正在我的视图中显示模型中的值,如下所示:C# 从ASP.NET MVC扩展函数返回HTML,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个ASP.NETMVC应用程序。我的应用程序正在我的视图中显示模型中的值,如下所示: public static MvcHtmlString ToMeasure<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string measurement = "sf") { if (measurement == "
public static MvcHtmlString ToMeasure<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string measurement = "sf")
{
if (measurement == "m2")
measurement = "m<sup>2</sup>";
return System.Web.Mvc.Html.ValueExtensions.ValueFor(html, expression, "{0:N0} " + measurement);
}
publicstaticmvchtmlstring-ToMeasure(此htmlhelp-html,Expression-Expression,stringmeasurement=“sf”)
{
如果(测量值=“m2”)
测量=“m2”;
return System.Web.Mvc.Html.ValueExtensions.ValueFor(Html,表达式“{0:N0}”+度量);
}
有时,测量值
表示平方英尺。其他时间,它将代表平方米。当它是平方米时,我想使用HTMLsup
标记。不幸的是,现在它呈现为文本m2
,而不是实际的上标。我如何告诉MVC使用上标而不是文字
谢谢 您需要构建要返回的html元素
public static MvcHtmlString ToMeasure<TModel, TValue>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TValue>> expression, string measurement = "sf")
{
StringBuilder html = new StringBuilder();
html.Append(ValueExtensions.ValueFor(helper, expression, "{0:N0}"));
// or html.Append(helper.ValueFor(expression, "{0:N0}"));
if (measurement == "m2")
{
html.Append("m");
TagBuilder sup = new TagBuilder("sup");
sup.InnerHtml = "2";
html.Append(sup.ToString());
}
else
{
html.Append(measurement);
}
// Optionally you might want to wrap it all in another element?
TagBuilder span = new TagBuilder("span");
span.InnerHtml = html.ToString();
return MvcHtmlString.Create(span.ToString());
}
假设yourProperty
的值为100,它将生成以下输出
<span>100m<sup>2</sup></span>
100m2
@KrishnaDhungana你能举个例子吗?我以前从来没有这样做过。那么从风景上看,你怎么称呼它呢?目前,我有@Html.ToMeasure(model=>model.Size)
及其呈现为System.Web.Mvc.HtmlHelper
1[MyApp.MyProject.Models.MyViewModel]`我刚刚使用@Html.ToMeasure(m=>m.myProperty,“m2”)对其进行了测试代码>并且工作正常。您是否已将相关部件包括在视图中?你确定你准确地复制了代码吗?
<span>100m<sup>2</sup></span>