为什么在MVC控制器中有2种编辑方法和2种create方法

时间:2017-04-10 18:42:19

标签: asp.net-mvc

我只是从朋友那里得到一些MVC应用程序来帮助他一点点,但这是我第一次使用MVC,我已经使用c#allready工作超过1年但从未在{{1 }}

接下来我的问题是,当我打开用于编辑和添加新用户的ASP.NET MVC时,我看到EDIT有2种方法,CREATE有两种方法,我很困惑为什么呢就像这样,这里只是Create方法的代码:

controller

但是之后又有了CreateUser方法,我很困惑为什么?我无法看到他们每个人的目的..我可以看到他们是不同的但是有人可以解释我为什么这样,他想要实现的目标(不幸的是他现在不能使用所以我不能和他说话这段代码。)

public ActionResult CreateUser()
        {

            var model = new UserTypeNew()
            {
                Roles = new List<user_userroles>()
            };


            List<roles> allRoles = RolesController.SelectAll();

            foreach (var item in allRoles)
            {
                user_userroles tempName = new user_userroles()
                {
                    RoleID = item.RoleID,
                    roles = item
                };
                model.Roles.Add(tempName);
            }
            return View(model);
        }

我可以注意到差异而不是代码,第二种方法有[HttpPost] public ActionResult CreateUser(User model) { if (ModelState.IsValid) { database_user newUser = new database_user() { UserName=model.UserName, FirstName=model.FirstName, LastName=model.LastName }; UserController.InsertNewUser(newUser); // I deleted code about adding roles return RedirectToAction("Index", "Users"); } return View(model); } ,我真的想知道为什么它们如此不同?为什么他们两个同名?

谢谢你们 干杯

1 个答案:

答案 0 :(得分:2)

没有HttpPost的那个用于GET请求。当用户导航到该页面时。它返回一个视图,可能包含一个供用户填写的表单。

HttpPost的那个是用户在页面上提交表单的时候。它将发布到相同的URL,但HTTP方法将不同(POST),因此它将路由到标有HttpPost属性的操作方法。

他们没有是同一个名字。你可以将它们命名为不同。在我以前使用的应用程序中,我们的GET方法是Edit,我们的POST方法例如是Update