我希望在用户使用表单身份验证登录后,在页面的右上方显示一些用户详细信息。
登录信息在每个页面(布局页面的一部分)上重复使用。
我创建了一个控制器和部分视图,它将使用RenderAction调用进行渲染。如果我运行网络应用程序,我不会看到HTML已呈现。我确实看到控制器被调用,但函数不是....
(注意:ExtendedController派生自ASP.NET MVC的Controller类)
控制器:
public class LoginInfoController : ExtendedController
{
private IDependencyFactory factory;
public LoginInfoController(IDependencyFactory factory)
: base(factory)
{
this.factory = factory;
}
[ChildActionOnly]
public PartialViewResult UserInfo()
{
var viewModel = new LogonInfoViewModel
{
Fullname = "Patrick Peters"
};
return PartialView(viewModel);
}
}
_Layout.cshtml:
<div class="span2 offset7">
<div class="bottom">
@{Html.RenderAction("UserInfo", "LoginInfo");}
</div>
</div>
_LoginInfo.cshtml:
<div class="user" style="text-align: right">
<cut HTML....>
</div>
答案 0 :(得分:1)
请改为尝试:
[ChildActionOnly]
public PartialViewResult UserInfo()
{
var viewModel = new LogonInfoViewModel
{
Fullname = "Patrick Peters"
};
return PartialView("_LoginInfo", viewModel); // <-- change is in this line
}
当您调用return PartialView(viewModel)
时,MVC会假定您的视图名称与控制器视图文件夹中的操作方法名称相同。如果将“_LoginInfo.cshtml”重命名为“UserInfo.cshtml”并确保它位于Views / LoginInfo文件夹中,则您的解决方案应该有效。