创建一个textarea帮助器,将视图内容作为参数

Omu*_*Omu 12 asp.net-mvc asp.net-mvc-3

我想创建一个html帮助器,它将作为视图的参数内容接收,如下所示:

<% Html.MyTextArea("txt1", () => {%> 

content of the view
<%=Html.TextBox("Name") %>
...
<% }) %>
Run Code Online (Sandbox Code Playgroud)

Wir*_*rie 3

既然您已将其标记为 MVC,我建议您可以执行像我在博客上发布的那样的操作,作为获取模板语法突出显示的方法,因为如果您不需要操作,解决方案将非常相似内部内容,并且只是对以某种方式“包装”它感兴趣(例如在需要一些额外逻辑的包含元素中)。

使用该技术,HtmlHelper 方法接收块的上下文。不过,语法与您建议的技术略有不同。

例如,您可以有类似的内容:

@using(Html.MyTextArea("txt1")) 
{
  <some HTML content here>
}
Run Code Online (Sandbox Code Playgroud)

上下文被传递到一个 IDisposable 对象,该对象包含一个 Writer(用于写入当前输出流)。在那里,它可以输出多个元素或根据需要进行其他操作。Dispose 用于编写关闭元素(如果需要)。

所以,你最终可能会得到这样的结果:

<textarea><some HTML content here></textarea>
Run Code Online (Sandbox Code Playgroud)

然而,正如我所提到的,这并不提供函数本身的内部内容。

由于 Razor 页面从内到外呈现,因此没有有效的方法可以按照您想要的方式获取输出。有一些关于将 Partial 的输出缓存到字符串的帖子(这意味着示例中的内部内容将位于另一个文件(.ascx 文件)中),因此您可能需要查看这些帖子。