C# 如何在Asp.net MVC中从一个控制器移动到下一个控制器

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?那样的话,我的家庭控制

我有一个小的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中的链接导航到该控制器。