ASP.NET MVC - Acción de forma implícita
-
05-07-2019 - |
Pregunta
Tengo un formulario que forma parte de una vista parcial y debo enviarlo a una ubicación diferente según el contexto de la vista que contiene el formulario. No puedo usar Html.BeginForm porque el formulario tiene un tipo de archivo multipart / form-data, por lo que tener la acción completada automáticamente está fuera de la puerta.
¿Hay una variable simple a la que puedo llamar para completar el controlador / acción actual como acción de formulario? Veo que ViewContext.RouteData.Values ??[" action "], ViewContext.RouteData.Values ??[" controller "] devolverá esos valores, pero ¿hay un mejor acceso?
¡Gracias!
Solución
La forma en que HtmlHelper.BeginForm ()
llena la acción y el controlador automáticamente es mediante el uso de Request.RawUrl
. Así que puedes escribir:
<form action="<%= Request.RawUrl %>" method="post" enctype="multipart/form-data">
....
</form>
Otros consejos
Esto es lo que hice
primera vista completa:
<% using (Html.BeginForm("Edit", "Admin",FormMethod.Post,
new { enctype = "multipart/form-data" })){%>
<% Html.RenderPartial("MerchandiseEditDetail", Model); %>
<%}%>>
segunda vista completa:
<% using (Html.BeginForm("Create", "Admin",FormMethod.Post,
new { enctype = "multipart/form-data" })){%>
<% Html.RenderPartial("MerchandiseEditDetail", Model); %>
<%}%>
Todavía estoy buscando una mejor solución, pero esto soluciona parcialmente mi problema por ahora.