如何在 Asp.net MVC 中从一个控制器移动到下一个控制器
How to move from one controller to next in Asp.net MVC
我有一个小型 asp.net mvc 应用程序,我的 Index.html 中几乎没有操作链接,home 控制器中的以下代码.
当用户单击 Edit ActionLink 时,它将控制权交给 HomerController 的 "Edit" acton 方法(其类型为 httpGet)。该操作方法的视图是 Edit.cshtml。如果我在该 EDIT 视图中进行一些数据操作..并尝试 POST 该数据,我该怎么办?在同一个 HomeController 中编写另一个编辑操作方法(httpPost)?那样的话我的家庭控制器会变大吧?
如果我需要为此编写单独的控制器,我该如何将控制转移到该控制器? (我的意思是如何将新创建的编辑控制器附加到编辑视图?)
List<StateCity> stateCityList = new List<StateCity>();
public ActionResult Index()
{
StateCity sc1 = new StateCity() { Id = 1, StateName = "Dallas", Cities = new List<string>() { "ab", "cd" } };
StateCity sc2 = new StateCity() { Id = 2, StateName = "Austin", Cities = new List<string>() { "ef", "gh" } };
stateCityList.Add(sc1);
stateCityList.Add(sc2);
return View(stateCityList);
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
public ActionResult Edit(int id)
{
return View();
}
您可以使用属性为 HTTP POST 创建操作:
[HttpPost]
public ActionResult Edit(parameters here){}
这是一个不错的example of forms in MVC
通常对于一次编辑,您需要执行两个操作。
一个用于加载编辑页面:
[HttpGet]
public ActionResult Edit(int id)
还有一个用于提交表单(执行编辑):
[HttpPost]
public ActionResult Edit(YourModel model)
如果您担心控制器方法变得太大,请考虑在应用程序的另一层抽象 logic/saving 代码。
如前所述,使用 HttpPost
属性和您的 ViewModel 作为参数再添加一项操作。
如果您遵循 SRP 原则,您的控制器将不会增长。在我看来,HomeController 不应该有像 Edit 这样的操作。我会将它们移动到相应的控制器(例如 ArticleController)。但是 HomeController 会有像 Index、About.
这样的动作
@Html.ActionLink("Edit Article", "Edit", "Article", new { id= 587 }, new { id = "linkId" })
点击这里了解更多详情:https://msdn.microsoft.com/en-us/library/dd504972(v=vs.118).aspx
我有一个小型 asp.net mvc 应用程序,我的 Index.html 中几乎没有操作链接,home 控制器中的以下代码.
当用户单击 Edit ActionLink 时,它将控制权交给 HomerController 的 "Edit" acton 方法(其类型为 httpGet)。该操作方法的视图是 Edit.cshtml。如果我在该 EDIT 视图中进行一些数据操作..并尝试 POST 该数据,我该怎么办?在同一个 HomeController 中编写另一个编辑操作方法(httpPost)?那样的话我的家庭控制器会变大吧?
如果我需要为此编写单独的控制器,我该如何将控制转移到该控制器? (我的意思是如何将新创建的编辑控制器附加到编辑视图?)
List<StateCity> stateCityList = new List<StateCity>();
public ActionResult Index()
{
StateCity sc1 = new StateCity() { Id = 1, StateName = "Dallas", Cities = new List<string>() { "ab", "cd" } };
StateCity sc2 = new StateCity() { Id = 2, StateName = "Austin", Cities = new List<string>() { "ef", "gh" } };
stateCityList.Add(sc1);
stateCityList.Add(sc2);
return View(stateCityList);
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
public ActionResult Edit(int id)
{
return View();
}
您可以使用属性为 HTTP POST 创建操作:
[HttpPost]
public ActionResult Edit(parameters here){}
这是一个不错的example of forms in MVC
通常对于一次编辑,您需要执行两个操作。
一个用于加载编辑页面:
[HttpGet]
public ActionResult Edit(int id)
还有一个用于提交表单(执行编辑):
[HttpPost]
public ActionResult Edit(YourModel model)
如果您担心控制器方法变得太大,请考虑在应用程序的另一层抽象 logic/saving 代码。
如前所述,使用 HttpPost
属性和您的 ViewModel 作为参数再添加一项操作。
如果您遵循 SRP 原则,您的控制器将不会增长。在我看来,HomeController 不应该有像 Edit 这样的操作。我会将它们移动到相应的控制器(例如 ArticleController)。但是 HomeController 会有像 Index、About.
这样的动作@Html.ActionLink("Edit Article", "Edit", "Article", new { id= 587 }, new { id = "linkId" })
点击这里了解更多详情:https://msdn.microsoft.com/en-us/library/dd504972(v=vs.118).aspx