I need to have the POST action be to an absolute URL (e.g., http://www.cnn.com). Is there a way to use Html.BeginForm() helper and pass it the url?
BeginForm method has several overloads. In order to set the action attribute on the form tag with the desired url, you need to use following overload of BeginForm:
BeginForm(String, String, FormMethod, IDictionary<String, Object>)
// here are the parameter names:
BeginForm(actionName, controllerName, method, htmlAttributes)
Since you want to post to an external site, there is no need to set actionName and controllerName, just leave them as null.
@Html.BeginForm(
null, null, FormMethod.Post, new {@action="http://cnn.com/post"}
)
This will not encode the action parameter.
All that the HtmlHelper.BeginForm
method does is help you to create a <form>
tag that targets a local controller. If you're posting to an external site, just write out the actual <form>
tag, i.e.
<form action="http://www.example.com/someaction" method="post">
Actual form content in here
</form>
That's all there is to it. MVC forms are not like the forms in ASP.NET WebForms where you have a bunch of ViewState and event fields and other magical elements. They're just regular old HTML forms.
check the mvc source code, html.beginform method not only create the native html form only, but also add sth for client validation which just i want,
if (htmlHelper.ViewContext.ClientValidationEnabled)
{
htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"];
}
so it will be a problem, i just write my own extension
© 2022 - 2024 — McMap. All rights reserved.