Переписывание Html.BeginForm () в MVC 3.0 и сохранение ненавязчивого javascript

Это может показаться немного глупым занятием, но это что-то Тем не менее я хочу учиться.

Прямо сейчас в ASP.NET MVC 3.0 вам необходимо использовать синтаксис @using (Html.BeginForm ()) {, а затем } , чтобы закрыть блок формы, чтобы получить новый причудливый «ненавязчивый javascript», чтобы вы не захотели писать все вручную (что нормально).

По какой-то причине ( Прочтите: * OCD * ) Я не Мне это нравится. Я бы предпочел это сделать ..

@Html.BeginForm()
@Html.EndForm()

Еще не кажетесь глупым? Ага, ну каждому свое. Я хочу понять, почему он работает так, как есть, и отредактировать его по своему вкусу. Поэтому я подумал, что первым делом я начну копать, это сам исходный код MVC 3.0. Итак, я прыгнул в codeplex, чтобы найти метод расширения BeginForm .

( http://aspnet.codeplex.com/SourceControl/changeset/view/63452#288009 )

Итак, теперь я немного сбит с толку относительно того, как начать достижение моей цели. Читая код, я обнаружил, что все они идут вниз к корневому методу (неудивительно, поскольку большинство методов расширения кажутся иерархическими методами, все сводятся к одному, чтобы избежать избыточности).

private static MvcForm FormHelper(this HtmlHelper htmlHelper, string formAction, FormMethod method, IDictionary 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. Если я просто наберу ..

6
задан Ciel 23 February 2011 в 15:28
поделиться