C#MVC修改在浏览器

时间:2017-05-09 18:00:05

标签: c# html asp.net-mvc-3

我想知道是否可以在将视图HTML发送到浏览器之前对其进行修改。

我想创建一个自定义标记编译器,我可以在视图中插入一个简单的标记<my-parsing-tag></my-parsing-tag>,并将其替换为某些特定的HTML。

我已经使用OnActionExecutingOnActionExecuted过滤器对上下文执行某些操作(更改ViewBags,查看名称,会话等),我也尝试在那里执行但是我不能找不到获取HTML的正确位置,我甚至不知道是否可以这样做。

是否有可能或者我需要将我的观点HTML存储在数据库中以完成我需要的工作?

修改

@Juan问道,为什么我需要它:

我正在使用号召性用语系统,用户可以在页面上放置一些特定的模态广告系列,只需使用这些简单标记或选择将显示该页面的页面。

之后,我会将选定的HTML附加到视图中,然后再将其发送给用户。此系统适用于无法编辑视图的用户,因为它们不能与HTML一起使用。

编辑2

经过一些研究后我试图实现自定义RazorView,代码为here,带有索引视图HTML,但现在我有两个问题:

第一个是我的索引视图有一些来自数据库的HTML,并使用我的ViewModel上的vars放在那里,而不是放置在我的索引视图末尾的号召性用语HTML,它被放置在ViewModel变量之前。第二个问题是HTML被复制而不是被替换。以下是结果如何的图像:

http://imgur.com/a/elul1

1 个答案:

答案 0 :(得分:1)

您可以使用HtmlHelper扩展名:

http://tech.trailmax.info/2012/08/creating-custom-html-helper-in-mvc3/

我建议如下:

  • 在模板中定义一个容器(最有可能布局),该容器将接收用户决定通过管理面板“放入”的任何内容。
  • 您可以通过ViewBag让视图知道可以显示的内容。
  • 视图使用您传递的信息以呈现所需内容。

它呈现的方式是HTMLHelper扩展的来源。您可以创建一个扩展方法,根据传递给它的信息呈现部分视图,或者根据所需的小部件有选择地调用的一组扩展方法。 / p>