MVC C#登录母版页

时间:2011-04-12 16:24:04

标签: c# .net asp.net-mvc login master-pages

嘿 我是mvc .net的新手。 我有一个主页,上面有登录。现在我希望能够从任何页面登录。 但我似乎无法让它发挥作用。我有一个AccountController,其方法是登录和母版页。 这是主页上的登录

 <% 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 LogOn方法。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

根据你所说的,我唯一能想到的是保持该形式不会触及LogOn Controller Action主页不知道LogOnModel然后无法正确传递给它控制器。

在您的MasterPage的最顶部,您将有一个这样的行

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

如果你将上面的表格直接嵌入你的MasterPage中,那么它需要知道LogOnModel,所以为了实现这一点,让这个顶线看起来像这样......

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

当然用您的项目名称替换“YourProjectName”...然后,除非我们没有看到您的设置,否则在您提交登录时应该点击LogOn功能。