C# 如何在Asp.net MVC中从一个控制器移动到下一个控制器
我有一个小的asp.net mvc应用程序,在Index.html中有几个ActionLink,在home Controlder中有以下代码 当用户单击Edit ActionLink时,它将控制权转移到HomerController的Edit acton方法,该方法的类型为httpGet。该操作方法的视图是Edit.cshtml。如果我在编辑视图中做了一些数据操作,并试图发布这些数据,我应该怎么做?在同一HomeController中编写另一个编辑操作方法httpPost?那样的话,我的家庭控制器会变大,对吗 如果我需要为此编写单独的控制器,如何将控制转移到该控制器?我的意思是如何将新创建的编辑控制器附加到编辑视图C# 如何在Asp.net MVC中从一个控制器移动到下一个控制器,c#,asp.net-mvc,controller,C#,Asp.net Mvc,Controller,我有一个小的asp.net mvc应用程序,在Index.html中有几个ActionLink,在home Controlder中有以下代码 当用户单击Edit ActionLink时,它将控制权转移到HomerController的Edit acton方法,该方法的类型为httpGet。该操作方法的视图是Edit.cshtml。如果我在编辑视图中做了一些数据操作,并试图发布这些数据,我应该怎么做?在同一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){}
这是一个很好的,通常用于编辑,您有两个操作 一个用于加载编辑页面:
[HttpGet]
public ActionResult Edit(int id)
一个用于提交执行编辑的表单:
[HttpPost]
public ActionResult Edit(YourModel model)
如果你担心你的控制器方法变得太大,考虑在你的应用程序的另一层抽象逻辑/保存代码。 如果遵循SRP原则,控制器将不会增长。在我看来,HomeController不应该有像编辑这样的操作。我会将它们移动到相应的控制器,例如ArticleController。但是HomeController会有索引之类的操作,大约
@Html.ActionLink("Edit Article", "Edit", "Article", new { id= 587 }, new { id = "linkId" })
查看此处了解更多详细信息:我不知道如何拥有另一个控制器,并从Index.cshtml中的链接导航到该控制器。