asp.net-mvc-3 – 在MVC 3.0中重写Html.BeginForm()并保持不引人注目的javascri
这似乎是一种愚蠢的努力,但这是我想要学习的东西. 现在,在ASP.NET MVC 3.0中,您需要使用语法@using(Html.BeginForm()){然后再使用}来关闭表单块以获得新的“不引人注目的javascript”,以免您想要手工编写所有这些(很好). 出于某种原因(阅读:* OCD *)我不喜欢这样.我真的宁愿这样做.. @Html.BeginForm() <div class="happy-css"> </div> @Html.EndForm() 好像傻了吗?是的,对每个人都很好.我想知道为什么它如何工作并根据自己的喜好塑造它.所以我认为我开始挖掘的第一个地方是MVC 3.0源代码本身.所以我跳进了codeplex来找到BeginForm Extension方法. (http://aspnet.codeplex.com/SourceControl/changeset/view/63452#288009) 所以现在我对如何开始实现目标感到有些困惑.通过阅读代码,我发现它们都归结为根方法(这并不奇怪,因为大多数扩展方法似乎都是分层方法,所有这些方法都是为了避免冗余而分成单个方法). private static MvcForm FormHelper(this HtmlHelper htmlHelper,string formAction,FormMethod method,IDictionary<string,object> htmlAttributes) { TagBuilder tagBuilder = new TagBuilder("form"); tagBuilder.MergeAttributes(htmlAttributes); // action is implicitly generated,so htmlAttributes take precedence. tagBuilder.MergeAttribute("action",formAction); // method is an explicit parameter,so it takes precedence over the htmlAttributes. tagBuilder.MergeAttribute("method",HtmlHelper.GetFormMethodString(method),true); HttpResponseBase httpResponse = htmlHelper.ViewContext.HttpContext.Response; httpResponse.Write(tagBuilder.ToString(TagRenderMode.StartTag)); return new MvcForm(htmlHelper.ViewContext.HttpContext.Response); } 我在这里没有看到的是这种方法与不显眼的javascript有什么关系.如果我只是输入.. < form action =“/ Controller / Action”method =“post”> 然后像我这样进行验证…… @ Html.ValidationSummary(假) 我没有得到不引人注目的JavaScript.但是,如果我使用 @using(Html.BeginForm()){然后我做.我甚至检查了生成的标记,我真的找不到差异. 现在它变得奇怪了.如果我输入… @ Html.BeginForm(),然后把我所有的表单代码,表单工作,我得到不引人注目的JavaScript,但我必须手动输入< / form>在末尾. @ Html.EndForm()不起作用.但最重要的是,我现在将文本System.Web.Mvc.Html.MvcForm写入< form action =“/ Controller / Action”method =“post”>正下方的输出流中. HTML. 有人可以启发和/或帮助我吗? 解决方法您的基本问题(即如何使用BeginForm / EndForm语法)的答案是以下列方式执行此操作:@{ Html.BeginForm(...); } <div> content</div> @{ Html.EndForm(); } 不幸的是,当调用写入输出的帮助程序时,Razor语法现在更加冗长(与大多数只返回html代码段的帮助程序相反).您可以通过编写自己的扩展方法来使这更容易: public static IHtmlString FormBegin(this HtmlHelper helper,...) { helper.BeginForm(...); return new HtmlString(""); } public static IHtmlString FormEnd(this HtmlHelper helper) { helper.EndForm(); return new HtmlString(""); } (编辑:百色站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何成功配置Common.Logging?
- asp.net – MS Chart for .NET预定义调色板颜色列表?
- ASP.NET web.config中数据库连接字符串connectionStrings节
- asp.net – Javascript日期本地化
- asp.net – System.Security.SecurityException?
- 如何在ASP.NET和C#中加载下拉列表?
- ASP.NET清空缓存时遇到的问题简析
- asp.net-mvc – 使用与本地化更改冲突的自定义数据注释进行
- asp.net-mvc – ASP.NET MVC忽略所有url结尾的“.html”
- .net – 什么可以解释托管堆上超过5,000,000个System.WeakR
- asp.net – 在剃刀中等同于End / Response.End?
- asp.net – 从我的GridView行返回一个对象
- asp.net – Web部署安装程序(MSI)中没有“IIS 7部
- .net – 什么可以解释托管堆上超过5,000,000个Sy
- asp.net-mvc – 有没有办法重命名RequestVerific
- asp.net – CalendarExtender定位问题
- webforms – ASP.Net Core 1.0是否支持WebForm项
- asp.net-mvc – ASP.NET MVC中的替代用户管理
- asp.net-mvc – ASP.net 5 MVC 6 bower.json和pr
- asp.net-mvc – 在MVC4中绑定的正确方法