加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:15:22 所属栏目:asp.Net 来源:网络整理
导读:在 Asp.net MVC3中,当您编写下面的代码时,它会自动生成包装html @using (Html.BeginForm()) { @Html.ValidationMessageFor(model = model.Text)} 它生成以下格式的代码, form method="post" action="/Feeds" !-- Fields Here --/form 我在@using(Html.BeginF
在 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);
    }
}

并在视图中:

@using (Html.BeginMYCUSTOMDIV())
{
    <span>Hello</span>
}

产生:

<div class="customDivClass">
    <span>Hello</span>
</div>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读