2010-02-07 26 views
1

我對我的應用程序中的輸入操作有2個視圖。asp.net mvc明確設置動作

第一個視圖(讓我們稱之爲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,但一切正常,因爲它應該。

問題:

當我提交的視圖2,它調用視圖1操作方法,而不是視圖2操作方法的形式。可能是因爲url仍然是View1。

我能做些什麼來調用動作視圖2

+0

**鏈接ASP.NET MVC操作**
http://jwbs-blog.blogspot.com/2009/08/chaining-aspnet-mvc-actions.html – 2010-02-07 07:07:07

回答

0

你可以在任何你想要的查看,並從您的應用程序提交表單到控制器的任何行動,因爲你可以指定

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

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

<% } %> 
1

你控制器方法應該如下所示:

[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); 
} 

...等等。