gpt4 book ai didi

asp.net-mvc-3 - 创建类似于Helper.BeginForm()的MVC3 Razor Helper

转载 作者:行者123 更新时间:2023-12-03 11:36:10 25 4
gpt4 key购买 nike

我想创建一个可以在括号之间添加内容的助手,就像Helper.BeginForm()一样。我不介意为我的助手创建一个“开始,结束”,但是这样做非常简单容易。

基本上我想做的是在这些标签之间包装内容,以便它们已经格式化

就像是

@using Html.Section("full", "The Title")
{
This is the content for this section
<p>More content</p>
@Html.TextFor("text","label")
etc etc etc
}

参数“full”是该div的CSS ID,“title”是该部分的标题。

除了做我想做的事情之外,还有没有更好的方法来实现这一目标?

预先感谢您的任何帮助。

最佳答案

完全有可能。在MVC中使用Helper.BeginForm之类的方法完成此操作的方式是该函数必须返回实现IDisposable的对象。

IDisposable interface定义了一个称为Dispose的方法,该方法在对象被垃圾回收之前被调用。

在C#中,using关键字有助于限制对象的范围,并在对象离开范围后立即对其进行垃圾回收。因此,将它与IDisposable一起使用是很自然的。

您将要实现一个实现SectionIDisposable类。构造时,必须为您的部分渲染open标签,而在放置后,则渲染close标签。例如:

public class MySection : IDisposable {
protected HtmlHelper _helper;

public MySection(HtmlHelper helper, string className, string title) {
_helper = helper;
_helper.ViewContext.Writer.Write(
"<div class=\"" + className + "\" title=\"" + title + "\">"
);
}

public void Dispose() {
_helper.ViewContext.Writer.Write("</div>");
}
}

现在该类型可用,您可以扩展HtmlHelper。
public static MySection BeginSection(this HtmlHelper self, string className, string title) {
return new MySection(self, className, title);
}

关于asp.net-mvc-3 - 创建类似于Helper.BeginForm()的MVC3 Razor Helper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com