Asp.net MVC установить действие явно - PullRequest
1 голос
/ 07 февраля 2010

У меня есть 2 вида для операции ввода в моем приложении.

Первый вид (назовем его view1) отправляет форму. На основе формы выполняются некоторые операции с базой данных, и возвращается второе представление (View2) с некоторыми другими данными из базы данных в качестве модели.

код действия контроллера:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult View1(FormCollection fc)
{
   //database ops to fill vm properties    
   View2ViewModel vm=new View2ViewModel();

   return View("View2", vm);
}

Теперь, поскольку я возвращаю новое представление, а не перенаправление действий, URL-адрес по-прежнему http://www.url.com/View1, но все работает так, как положено.

Проблема:

Когда я отправляю форму в View2, она вызывает метод действия View1, а не метод действия View2. Вероятно, потому что URL-адрес по-прежнему View1.

Что я могу сделать, чтобы вызвать действие View2

Ответы [ 2 ]

1 голос
/ 07 февраля 2010

Методы вашего контроллера должны выглядеть примерно так:

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult View1(int id)
{
   //database ops to fill vm properties    
   View1ViewModel vm=new View1ViewModel(id);

   return View("View1", vm);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult View1(FormCollection fc)
{
   // Code here to do something with FormCollection, and get id for
   // View2 database lookup

   return RedirectToAction("View2", id);
}

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult View2(int id)
{
   // Do something with FormCollection 

   return View("View2", vm);
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult View2(int id)
{
   // Do something with FormCollection 

   return RedirectToAction("View3", id);
}

... и т. Д.

0 голосов
/ 07 февраля 2010

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

<% using (Html.BeginForm("ThAction", "Controller"))
   { %>

   Enter your name: <%= Html.TextBox("name") %>
   <input type="submit" value="Submit" />

<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...