首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当未指定名称时如何调用操作方法

当未指定名称时如何调用操作方法
EN

Stack Overflow用户
提问于 2014-05-09 05:49:20
回答 1查看 93关注 0票数 0

在我的LoginController中,我有以下操作方法:

代码语言:javascript
复制
[HttpPost]
public ActionResult Login(LoginViewModel model, string returnUrl) {
    if (ModelState.IsValid) {
       if (authProvider.Authenticate(model.UserName, model.Password)) {
          return Redirect(returnUrl ?? Url.Action("Index", "Admin"));
       } else {
          ModelState.AddModelError("", "Incorrect username or password");
          return View();
         }
    } else {
       return View();
    }
}

而相应的视图是用LoginViewModel (也是上述操作方法的第一个参数)类强类型的,操作方法是这样调用的:

代码语言:javascript
复制
  @using(Html.BeginForm()) {
    @Html.EditorForModel()
   <p><input type="submit" value="Log in" /></p>
 }

现在我有两个问题:

1.控制器中有另一个名称相同的动作方法。区别在于另一个没有HttpPost属性。为什么调用上述操作方法而不调用另一个操作方法?

2.动作方法的两个参数与null不同。传递给被调用的action方法的信息。可以推断模型和url被传递给该方法吗?若然,那麽在甚麽情况下才能通过这两部婴儿车呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-09 06:07:47

以下是答案:

1. Html.BeginForm()的默认HTTP方法是POST,因此当您提交表单时,将调用带有HttpPost的Action,其中HTTP方法作为其他同名动作方法被调用。

2.当您通过单击“登录”按钮登录(即通过单击“登录”按钮)登录时,当您尝试直接访问另一个页面而不记录设置为初始页面的LoginViewModel设置为初始页面时,当您被重定向到登录页时,returnUrl将被传递。

有关BeginForm详细信息,请参阅下面的链接。

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.formextensions.beginform%28v=vs.118%29.aspx

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23557453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档