asp.net mvc,错误的函数被触发。 - 已编辑

时间:2010-02-04 23:45:40

标签: asp.net-mvc

我有拥有此控件的母版页接受Post动词。我的LogOn页面也与母版页相关联。当我输入错误的用户名/密码时,接受动词的控件的方法也会随着接受用户名密码的方法而被触发。

这是在HomeConroller:

 [ActionName("ControlTemp"), AcceptVerbs(HttpVerbs.Post)]
        public ActionResult ControlTemp(TempClass temp)
        {
           return PartialView("ControlTemp"); 
        }

这是在AccountController:

[AcceptVerbs(HttpVerbs.Post)]
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings",
            Justification = "Needs to take same parameter type as Controller.Redirect()")]
        public ActionResult LogOn(string userName, string password, bool rememberMe, string returnUrl)
        {

            if (!ValidateLogOn(userName, password))
            {
                return View();
            }

            FormsAuth.SignIn(userName, rememberMe);
            if (!String.IsNullOrEmpty(returnUrl))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }

现在,为什么你认为事情也会被发布到ControlTemp?

编辑:这就是我在masterpage上引用ControlTemp控件的方式。

            <div id = "divControlTemp">  <% Html.RenderAction("ControlTemp", "Home"); %></div> 

所以看完调试器后,如果用户名/密码无效,我看到它返回View()。然后它命中divControlTemp控件,但不是触发 public ActionResult ControlTemp(),它会触发

[ActionName("ControlTemp"), AcceptVerbs(HttpVerbs.Post)]
            public ActionResult ControlTemp(TempClass temp)

这就是我从调试器中看到的全部内容。所以我的问题是为什么你认为它是一个帖子?是因为重播View()是从接受Post动词的方法调用的吗?

1 个答案:

答案 0 :(得分:1)

如果您的问题是“单个http请求可以触发两个单独的操作方法”,则答案是否定的。当然,除非从一个动作方法重定向到另一个动作方法,否则其中一个方法直接调用另一个。如果有重定向,您可以在Firebug控制台中看到它们。

但坦率地说,如果这是我的软件,我只需启动调试器,看看出了什么问题。以这种方式发现问题应该不难。