【发布时间】:2011-07-10 21:37:14
【问题描述】:
我是探索 MVC3 的新手,但遇到了一个问题。
我正在编辑我的主视图,并希望在用户未登录时在每个页面上都可以看到登录框。我使用以下代码完成了此操作:
@if (Request.IsAuthenticated)
{
<text>Welcome <strong>@User.Identity.Name</strong>!
[ @Html.ActionLink("Log Off", "LogOff", "Account") ]</text>
}
else
{
Html.RenderPartial("../Account/LogOn");
}
这适用于我的 HomeController 的常规 Index 方法。
但是,当转到我的 NewsController 的 Index 方法时,我收到以下错误:
传入字典的模型项的类型为“System.Collections.Generic.List`1[LeagueSite.Models.News]”,但此字典需要“LeagueSite.Models.LogOnModel”类型的模型项。
我了解问题所在,但并不真正知道解决方案。
LogOn 视图如下所示(标准 MVC3 登录视图):
@model LeagueSite.Models.LogOnModel
@{
ViewBag.Title = "Log On";
}
<h2>Login</h2>
<p>
Please enter your user name and password. @Html.ActionLink("Register", "Register") if you don't have an account.
</p>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
@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>
<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>
} `
任何提示/想法?
【问题讨论】:
标签: asp.net-mvc-3 razor