2009-07-30 6 views
1

J'ai un formulaire qui fait partie d'une vue partielle et je dois le soumettre à un emplacement différent en fonction du contexte de la vue contenant le formulaire. Je ne peux pas utiliser Html.BeginForm parce que le formulaire a un type multipart/form-data enctype de sorte que l'action remplie automatiquement est hors de la porte.ASP.NET MVC - Action de formulaire implicite

Existe-t-il une variable simple que je peux appeler pour remplir le contrôleur/l'action en cours en tant qu'action de formulaire? Je vois que ViewContext.RouteData.Values ​​["action"], ViewContext.RouteData.Values ​​["controller"] va retourner ces valeurs, mais y a-t-il un meilleur accesseur?

Merci!

Répondre

2

La manière HtmlHelper.BeginForm() remplit l'action et le contrôleur automatiquement utilise Request.RawUrl. Donc, vous pouvez simplement écrire:

<form action="<%= Request.RawUrl %>" method="post" enctype="multipart/form-data"> 
    .... 
</form> 
+0

Awesome Sauce. Cela l'a fait pour moi. –

0

C'est ce que je l'ai fait

première vue complète:

<% using (Html.BeginForm("Edit", "Admin",FormMethod.Post, 
       new { enctype = "multipart/form-data" })){%> 
      <% Html.RenderPartial("MerchandiseEditDetail", Model); %> 
    <%}%>> 

deuxième vue complète:

<% using (Html.BeginForm("Create", "Admin",FormMethod.Post, 
     new { enctype = "multipart/form-data" })){%> 
    <% Html.RenderPartial("MerchandiseEditDetail", Model); %> 
<%}%> 

Je cherche toujours une meilleure solution, mais résoudre partiellement mon problème pour l'instant.

Questions connexes