2009-12-27 8 views

Antwort

14

Alles, was die HtmlHelper.BeginForm-Methode tut, hilft Ihnen beim Erstellen eines <form>-Tags, das auf einen lokalen Controller abzielt. Wenn Sie auf eine externe Seite hochladen, wird schreiben Sie einfach den tatsächlichen <form>-Tag aus, das heißt

<form action="http://www.example.com/someaction" method="post"> 
    Actual form content in here 
</form> 

Das ist alles dort ist zu ihm ist. MVC-Formulare sind nicht wie die Formulare in ASP.NET-WebForms, in denen Sie eine Reihe von ViewState- und Ereignisfeldern und anderen magischen Elementen haben. Sie sind nur normale alte HTML-Formulare.

+0

Yeh, ich habe das getan. Aber ich habe mich nur gefragt, ob ich etwas in MVC verpasst habe (aus RoR Land, es gibt eine Form {url =()} Methode. Thx. – dale

+4

Es kann einige Thins im Zusammenhang mit der Validierung geben, die nicht für dich erstellt werden, wenn Sie müssen das Formular manuell erstellen - also passen Sie auf, wenn Sie die MVC-Validierung mit jQuery verwenden –

+1

Wie simon Weber darauf hingewiesen, wenn Sie nicht das HtmlHelper Validierung Framework funktioniert nicht.Ich habe dieses Problem selbst – Zasz

0

Kontrolle der mvc Quellcode, Html.BeginForm Methode erstellen nicht nur die native nur HTML-Formular, sondern auch sth für die Client-Validierung hinzufügen, die ich möchte nur,

if (htmlHelper.ViewContext.ClientValidationEnabled) 
{ 
    htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"]; 
} 

so wird es ein Problem sein, ich Schreiben Sie einfach meine eigene Erweiterung

57

BeginForm Methode hat mehrere Überladungen. Um das action-Attribut auf dem Formular-Tag mit der gewünschten URL zu setzen, müssen Sie folgende Überlastung von Begin verwenden:

BeginForm(String, String, FormMethod, IDictionary<String, Object>) 
// here are the parameter names: 
BeginForm(actionName, controllerName, method, htmlAttributes) 

Da Sie auf eine externe Seite zu stellen, gibt es keine Notwendigkeit action einstellen und controllerName, belassen Sie sie einfach als null.

@Html.BeginForm(
    null, null, FormMethod.Post, new {@action="http://cnn.com/post"} 
) 

Dies wird den Aktionsparameter nicht kodieren.

+1

Das hat meine Zeit gerettet. – Govind