我写了一个方法BaseController。而HomeController 就是从中固有的
public abstract partial class BaseController : Controller
{
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (Session["GeneralUserFullname"] != null)
{
ViewData["Username"] = Session["GeneralUserFullname"];
}
base.OnResultExecuted(filterContext);
}
}
在 _Layout.cshtml 之后。我调用ViewData["用户名"]打印名称以放置设置登录。我已经调试过,ViewData["用户名"]可以获得正确的值。
但它总是给出错误:不允许子操作执行重定向操作。
Line 88: <a class="dropdown-toggle" data-toggle="dropdown">
Line 89: <img src="http://placehold.it/300">
Line 90: <span>@ViewData["Username"]</span>
Line 91: <i class="caret"></i>
Line 92: </a>
请给出建议。谢谢
标记的呈现可能会给您带来奇怪的错误。 尝试通过添加结束标记来更正<img src=... />
<-----的标记。
如果你想让用户可用于所有视图,你可以使用它
public abstract partial class BaseController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext ctx)
{
base.OnActionExecuting(ctx);
ViewData["user"] = "user";
}
}
OnActionExecution将在调用操作之前触发,一旦您进入OnActionExecute函数,您就可以在ViewData变量中设置用户,从而可用于所有渲染的视图。
在视图上,然后只需打印它
@ViewData["user"]