当用户访问我的主页并且他们单击登录按钮时,它会弹出包含常规表单的jquery ui对话框。mvc3从视图重定向和从部分重定向导致http 500错误
@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { @name = "user-login-form", @id = "user-login-form" }))
{
<fieldset style="margin: 10px 0 0 0;">
<label for="name">
Username</label>
<input type="text" name="UserName" id="username" class="text ui-widget-content ui-corner-all" />
<label for="password">
Password</label>
<input type="password" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
</fieldset>
}
此表单存在于作为主控制器上索引视图一部分的部分视图中。正如你可以看到它发布到帐户控制器中的登录操作。以下是该行动。
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl) // rename either the model or the view name field to match.
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
AuthenticationService.SignIn(model.UserName, model.RememberMe);
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
if (MembershipService.IsUserInRole(model.UserName, "ServiceProvider"))
{
return RedirectToAction("Index", "ServiceProvider");
}
return RedirectToAction("Index", "Project");
}
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
// If we got this far, something failed, redisplay form
return View(model);
}
正如你可以看到,如果该模型不是有效它发送你到登录视图(不是部分),这是账户控制器的一部分。
问题是......无论我以任何方式填写部分或常规视图中的表格,我最终都会在/ Account/LogOn页面发生500错误。我已经完成了一百次,我似乎无法弄清楚发生了什么问题。数据是正确的。用户名和密码经过验证,但我从来没有真正实现过Project控制器上的Index操作。
在项目控制器中的索引操作存在,它是所有返回查看()。 Index.cshtml文件确实存在。即使我删除所有模型并尽可能简化网页,我仍然会遇到同样的问题。保持在/帐户/登录页面有500错误,而不是/ Project/Index。
我已经做了一些搜索,没有找到从阿贾克斯等重定向...和东西说你不应该从一个局部的,但即使从它不工作的常规视图重定向一些东西。不知道它可能是一个IIS问题或什么?绝对愿意尝试任何事情......一直在这方面挣扎了两天。
感谢,
你是正确的...这是隐藏在目标视图中的编译错误。我试图通过说@ html.Partial(“...”)显然不存在... – 2012-02-17 20:14:15