我有拥有此控件的母版页接受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动词的方法调用的吗?
答案 0 :(得分:1)
如果您的问题是“单个http请求可以触发两个单独的操作方法”,则答案是否定的。当然,除非从一个动作方法重定向到另一个动作方法,否则其中一个方法直接调用另一个。如果有重定向,您可以在Firebug控制台中看到它们。
但坦率地说,如果这是我的软件,我只需启动调试器,看看出了什么问题。以这种方式发现问题应该不难。