asp.net-mvc - 创建一些东西@using (Html.BeginForm()) Helpers

标签 asp.net-mvc asp.net-mvc-3

在 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/

相关文章:

c# - 在纯asp.net中,不是mvc3+,通过路由调用controller的方法

c# - 将 C# MVC 应用程序连接到远程 SQL Server 数据库

css - 在 MVC 字段集中流动编辑器元素?

asp.net-mvc - 在何处实现Asp.net MVC中的常用功能

asp.net-mvc - 为什么微软为 ASP.NET 选择 MVC?

c# - 如何允许具有管理员权限的用户访问 Controller

javascript - 我想在 Asp.Net MVC 中使用 Ajax 显示表数据。这个 Ajax 语法有什么问题?

linq - 寻求 Entity Framework 中 3 层 LINQ 查询的建议

asp.net-mvc-3 - 在 mvc 的下拉列表中使用外键

c# - 从数据库生成 DAL 层(存储库模式)