2011-04-12 54 views
1

嘿, 我是mvc.net新手。 我有一个主页,它有一个登录。现在我想能够从任何页面登录。 但我似乎无法得到它的工作。我有一个AccountController与方法登录和母版页。 这是母版MVC C#登录Masterpage

<% using (Html.BeginForm("LogOn", "Account")) 
       { %> 
      <%: Html.ValidationSummary(true, "Login foutief. probeer opnieuw.") %> 
      <div id="login_panel"> 

        <fieldset> 

         <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> 

         <div class="editor-label"> 
          <%: Html.CheckBoxFor(m => m.RememberMe) %> 
          <%: Html.LabelFor(m => m.RememberMe) %> 
         </div> 

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

      </div> 
      <% } %> 

登录这是控制器

[HttpPost] 
    public ActionResult LogOn(LogOnModel model, string returnUrl) 
    { 
     if (ModelState.IsValid) 
     { 
      if (persoonRepos.aanmelden(model.UserName, model.Password)) 
      { 
       FormsService.SignIn(model.UserName, model.RememberMe); 
       if (!String.IsNullOrEmpty(returnUrl)) 
       { 
        return Redirect(returnUrl); 
       } 
       else 
       { 
        return RedirectToAction("Index", "Home"); 
       } 
      } 
      else 
      { 
       ModelState.AddModelError("", "The user name or password provided is incorrect."); 
      } 
     } 
     return View(model); 
    } 

当我测试它,它不会去到accountmodel登录方法。

有人能帮助我吗?

+0

你在哪里设置你的断点时测试,看看它是否进入LogOn方法? – curtisk 2011-04-12 16:52:18

+0

我的断点是在登录方法中,它会引发这个问题。我想这行:Html.BeginForm(“LogOn”,“帐户”)它应该这样做。 – 2011-04-13 09:09:16

+0

你是否用global.asax中的路由改变了任何东西? – curtisk 2011-04-13 12:17:42

回答

0

根据你的意思,我能想到的唯一的事情就是保持这种形式不受LogOn控制器操作的影响,即母版页不知道LogOnModel,然后无法正确传递给控制器。

在你的母版的最顶端,你将有这样

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %> 

线如果你有以上的母版直接嵌入形式,那么就需要知道的LogOnModel的,所以使这种情况发生使该顶线看起来就像这样......

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<YourProjectName.Models.LogOnModel>" %> 

当然替换“为yourprojectname”与您的项目名称...那么,除非有别的东西我们不是您的设置看,那提交登录时应该点击LogOn功能。

+0

<%@ Master Language =“C#”Inherits =“System.Web.Mvc.ViewMasterPage ”%> 不能在代码中使用此行;) – 2011-04-14 14:51:02