在 Asp.net MVC3 中,当您编写以下代码时,它会自行生成包装 html
@using (Html.BeginForm()) {
@Html.ValidationMessageFor(model => model.Text)
}
它生成以下格式的代码,
<form method="post" action="/Feeds">
<!-- Fields Here -->
</form>
我的问题在
@using (Html.BeginForm())
自动添加 <form>
在开始和结束时标记,我怎样才能创建类似我自己的东西。我正在寻找类似下面的东西
@using (Html.BeginMYCUSTOMDIV())
{
I am text inside div
}
预期生成的输出
<div class="customDivClass">
I am text inside div
</div>
最佳答案
沿线的东西:
public class MyDiv : IDisposable
{
private readonly TextWriter _writer;
public MyDiv(TextWriter writer)
{
_writer = writer;
}
public void Dispose()
{
_writer.WriteLine("</div>");
}
}
public static class MyExtensions
{
public static MyDiv BeginMYCUSTOMDIV(this HtmlHelper htmlHelper)
{
var div = new TagBuilder("div");
div.AddCssClass("customDivClass");
htmlHelper.ViewContext.Writer.WriteLine(div.ToString(TagRenderMode.StartTag));
return new MyDiv(htmlHelper.ViewContext.Writer);
}
}
并在 View 中:
@using (Html.BeginMYCUSTOMDIV())
{
<span>Hello</span>
}
产生:
<div class="customDivClass">
<span>Hello</span>
</div>
关于asp.net-mvc - 创建一些东西@using (Html.BeginForm()) Helpers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537462/