C# 使用razor修改ASP.NET MVC3中的Html帮助程序
我有以下问题: 我想知道是否可以修改默认的html帮助程序方法,例如html.BeginForm()方法 我知道我可以编写一个自定义的helper方法,在这里我可以添加一些东西,但是其中一些有很多重载函数 然后,我唯一需要的是,您可以在呈现元素之后添加一些自定义html字符串 e、 g: 那之后呢C# 使用razor修改ASP.NET MVC3中的Html帮助程序,c#,asp.net-mvc-3,razor,html-helper,C#,Asp.net Mvc 3,Razor,Html Helper,我有以下问题: 我想知道是否可以修改默认的html帮助程序方法,例如html.BeginForm()方法 我知道我可以编写一个自定义的helper方法,在这里我可以添加一些东西,但是其中一些有很多重载函数 然后,我唯一需要的是,您可以在呈现元素之后添加一些自定义html字符串 e、 g: 那之后呢 <form></form> 我想呈现一个验证脚本或其他东西,比如jQuery validator: <script>$('#setDateForm').val
<form></form>
我想呈现一个验证脚本或其他东西,比如jQuery validator:
<script>$('#setDateForm').validate();</script>
$('#setDateForm').validate();
因为我不想一遍又一遍地这样做(也许我可以忘记一次…),所以最好修改默认的Html帮助程序
如果不可能,我可能只需要为EndForm helper编写我自己的BeginForm或包装器://这是不可能的。您必须自己编写助手。您可以编写自己的扩展方法来完成此操作。从Codeplex获取BeginForm方法的代码(MVC3源代码为:),并对其进行相关更新,以呈现所需的表单
代码可在
System.Web.MVC
项目下的FormExtensions.cs
类中找到。查找正在从BeginForm覆盖调用的FormHelper方法。作为一个非常基本的起点,您可以使用如下内容:
namespace YourProject.Helpers
{
public static class HtmlHelperExtensions
{
public static IDisposable CustomBeginForm(this HtmlHelper helper, string html)
{
return new MvcFormExtension(helper, html);
}
private class MvcFormExtension : IDisposable
{
private HtmlHelper helper;
private MvcForm form;
private string html;
public MvcFormExtension(HtmlHelper helper, string html)
{
this.helper = helper;
this.form = this.helper.BeginForm();
this.html = html;
}
public void Dispose()
{
form.EndForm();
helper.ViewContext.Writer.Write(this.html);
}
}
}
}
您需要在视图中添加名称空间,或者将其添加到视图文件夹中的web.config文件中。之后,您可以这样使用它:
@using (Html.CustomBeginForm("<p>test</p>")) {
// Additional markup here
}
@使用(Html.CustomBeginForm(test){
//此处有附加标记
}
这对我来说很有用,但您肯定需要定制它以满足您的需要,特别是当您可能希望将其他参数传递到
Html.BeginForm()
谢谢,这很有帮助。它仍然是一种包装器,但它比我的尝试要好得多:)谢谢你提供的信息,我接受了John H的回答,因为他费心发布了一个示例,但我没有想到.NET本身可能是开源的,因此浏览那里的源代码也很有帮助:)没问题。很高兴你能弄明白。约翰应该得到+15,因为他发布了一些代码:)
@using (Html.CustomBeginForm("<p>test</p>")) {
// Additional markup here
}