ASP.NET MVC - Azione in forma implicita
-
05-07-2019 - |
Domanda
Ho un modulo che fa parte di una vista parziale e devo inviarlo in una posizione diversa in base al contesto della vista contenente il modulo. Non riesco a usare Html.BeginForm perché il modulo ha un enctype multipart / form-data, quindi avere l'azione compilata automaticamente è fuori dalla porta.
Esiste una semplice variabile che posso chiamare per compilare il controller / azione corrente come azione del mio modulo? Vedo che ViewContext.RouteData.Values ??[" action "], ViewContext.RouteData.Values ??[" controller "] restituirà quei valori, ma esiste un accessorio migliore?
Grazie!
Soluzione
Il modo in cui HtmlHelper.BeginForm ()
riempie l'azione e il controller automaticamente è usando Request.RawUrl
. Quindi potresti semplicemente scrivere:
<form action="<%= Request.RawUrl %>" method="post" enctype="multipart/form-data">
....
</form>
Altri suggerimenti
Questo è quello che ho fatto
prima visualizzazione completa:
<% using (Html.BeginForm("Edit", "Admin",FormMethod.Post,
new { enctype = "multipart/form-data" })){%>
<% Html.RenderPartial("MerchandiseEditDetail", Model); %>
<%}%>>
seconda visualizzazione completa:
<% using (Html.BeginForm("Create", "Admin",FormMethod.Post,
new { enctype = "multipart/form-data" })){%>
<% Html.RenderPartial("MerchandiseEditDetail", Model); %>
<%}%>
Sto ancora cercando una soluzione migliore, ma questo risolve parzialmente il mio problema per ora.