嘿 我是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方法。
有人可以帮助我吗?
答案 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功能。