我只是从朋友那里得到一些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);
}
,我真的想知道为什么它们如此不同?为什么他们两个同名?
谢谢你们 干杯
答案 0 :(得分:2)
没有HttpPost
的那个用于GET请求。当用户导航到该页面时。它返回一个视图,可能包含一个供用户填写的表单。
HttpPost
的那个是用户在页面上提交表单的时候。它将发布到相同的URL,但HTTP方法将不同(POST),因此它将路由到标有HttpPost
属性的操作方法。
他们没有是同一个名字。你可以将它们命名为不同。在我以前使用的应用程序中,我们的GET方法是Edit
,我们的POST方法例如是Update
。