2010-09-20 2 views
0

В моем представлении (.aspx) код, какие параметры я могу предоставить Html.BeginForm(), чтобы заставить его отправить обратно на тот же контроллер и действие, которое создало представление?передать те же действия в MVC

+0

Никаких параметров не должно работать. :) – bzlm

ответ

4

Все зависит от вашей таблицы маршрутов. Предполагая, что вы используете стандартные маршруты, я думаю, вы не можете предоставить никаких аргументов (или нулей) и что вы окажетесь в том же самом действии контроллера, которое сгенерировало представление.

В противном случае вы можете вытащить текущий контроллер и действие из данных маршрута.

+0

Прошло некоторое время с тех пор, как я проработал MVC-программирование, поэтому я мог бы говорить из своего битового ведра :-) –

+0

Спасибо, никаких параметров не работает! Но как я могу указать POST или GET? – JoelFan

+0

Чтобы указать метод (POST/GET), вам придется использовать одну из других подписи метода. BeginForm (string actionName, string controllerName, FormMethod formMethod) должен сделать трюк. – Dismissile

1

Использования ViewContext вы можете получить данные о маршруте, который был вызван

<% using (Html.BeginForm(ViewContext.RouteData.Values["controller"].ToString(), ViewContext.RouteData.Values["action"].ToString(), FormMethod.Post)) {%> 
    your form data here 
<% } %> 
0

На вашего взгляде

<% using (Html.BeginForm("actionName", "controllerName", new { }, FormMethod.Post, "")){ %> 
<%} %> 

, если вы не используете HTML Помощников с

<form id='form' action="../controllerName/actionName" method="post"> 

В контроллере

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult actionName (FormCollection collection) 
{} 
Смежные вопросы