Ich muss die POST-Aktion auf eine absolute URL (z. B. http://www.cnn.com) haben. Gibt es eine Möglichkeit, den Html.BeginForm() Helfer zu benutzen und ihm die URL zu übergeben?Html.BeginForm() mit einer absoluten URL?
Antwort
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.
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
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.
Das hat meine Zeit gerettet. – Govind
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
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 –
Wie simon Weber darauf hingewiesen, wenn Sie nicht das HtmlHelper Validierung Framework funktioniert nicht.Ich habe dieses Problem selbst – Zasz