mvc - Html.BeginForm() con una URL absoluta?
html beginform attributes (3)
El método BeginForm tiene varias sobrecargas. Para establecer el atributo de acción en la etiqueta del formulario con la URL deseada, debe usar la siguiente sobrecarga de BeginForm:
BeginForm(String, String, FormMethod, IDictionary<String, Object>)
// here are the parameter names:
BeginForm(actionName, controllerName, method, htmlAttributes)
Como desea publicar en un sitio externo, no es necesario establecer actionName y controllerName, simplemente déjelos como null.
@Html.BeginForm(
null, null, FormMethod.Post, new {@action="http://cnn.com/post"}
)
Esto no codificará el parámetro de acción.
Necesito que la acción POST sea para una URL absoluta (p. Ej., Http://www.cnn.com ). ¿Hay alguna forma de utilizar el helper Html.BeginForm () y pasarle la url?
Todo lo que hace el método HtmlHelper.BeginForm
es ayudarlo a crear una etiqueta <form>
que se dirige a un controlador local. Si está publicando en un sitio externo, simplemente escriba la etiqueta <form>
real, es decir,
<form action="http://www.example.com/someaction" method="post">
Actual form content in here
</form>
Eso es todo al respecto. Los formularios MVC no son como los formularios en ASP.NET WebForms donde tiene un montón de ViewState y campos de eventos y otros elementos mágicos. Simplemente son viejos formularios HTML normales.
compruebe el código fuente de mvc, el método html.beginform no solo crea el formulario html nativo solamente, sino que también agrega algo para la validación del cliente que yo solo quiero,
if (htmlHelper.ViewContext.ClientValidationEnabled)
{
htmlHelper.ViewContext.FormContext.FormId = tagBuilder.Attributes["id"];
}
entonces será un problema, solo escribo mi propia extensión