2012-02-17 50 views
0

当用户访问我的主页并且他们单击登录按钮时,它会弹出包含常规表单的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问题或什么?绝对愿意尝试任何事情......一直在这方面挣扎了两天。

感谢,

回答

0

1)500服务器错误意味着脚本已经抛出一个错误,这是不是一个破碎的链接像404 error.So使用“友好HTTP错误”,这会给你一个更全面的描述的错误,所以你可以调试脚本。 2)尝试使用剃刀语法MVC 3象下面或使用视图强类型。 3)可能是你的密码属性不对(它的密码不是密码)。

@using(Html.BeginForm()){

<div> 
    <fieldset> 
     <legend>Account Information</legend> 
 <div class="editor-label"> 
      @Html.LabelFor(m => m.UserName) 
     </div> 
     <div class="editor-field"> 
      @Html.TextBoxFor(m => m.UserName) 
      @Html.ValidationMessageFor(m => m.UserName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(m => m.Password) 
     </div> 
     <div class="editor-field"> 
      @Html.PasswordFor(m => m.Password) 
      @Html.ValidationMessageFor(m => m.Password) 
     </div> 


     <p> 
      <input type="submit" value="Log On" /> 
     </p> 
    </fieldset> 
</div> 

}

+0

你是正确的...这是隐藏在目标视图中的编译错误。我试图通过说@ html.Partial(“...”)显然不存在... – 2012-02-17 20:14:15