如何解决生成HTML DOM元素并将其插入到Razor页面中
我目前正在处理一个asp.net MVC Web应用程序,在该应用程序中,我必须生成或多或少复杂的HTML结构,然后将其插入Razor页面。目前,我生成带有字符串连接的HTML,然后将字符串添加到控制器中的ViewBag中,如下所示:
public class SomeController : Controller
{
public IActionResult Index()
{
string htmlString = "<div id=\"example-div\">Some more Stuff</div>" + "Some more HTML strings";
Viewbag.htmlString = htmlString;
return View();
}
}
然后我像这样在我的Razor页面内部访问该字符串并将其渲染为HTML:
@Html.Raw(ViewBag.htmlString)
但这不是最佳实践。有没有更好的方法可以在控制器内部实际生成HTML DOM元素,然后将该元素像模板一样加载到剃须刀页面中?如果可以,怎么办?
谢谢
解决方法
在这里您可以创建自己的自定义扩展帮助程序。
-
创建静态类
-
创建静态方法
-
在web.config视图文件夹中注册名称空间以在以下位置进行全局访问 所有页面
- 创建一个班级
public static class HtmlHelpers
{
public static MvcHtmlString RenderTemplate(this HtmlHelper helper,string moreHtml=default(string))
{
MvcHtmlString ohtml = null;
StringBuilder builder=new StringBuilder();
builder.Append("<div id=\"example-div\">");
builder.Append("Some more Stuff");
builder.Append(moreHtml);
builder.Append("</div>");
ohtml =new MvcHtmlString(builder.ToString());
return ohtml;
}
}
- 在
namespaces
属性内的web.config中注册类名称空间
<add namespace="YOURNAMESPACE"/>
- 打开任何cshtml页面,然后尝试键入此关键字。
@Html.RenderTemplate() // Default template
@Html.RenderTemplate("<span>More stuff</span>") // Customized template
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。