asp.net-mvc – 在MVC中将值从Controller传输到Shared View
发布时间:2020-12-15 19:52:19 所属栏目:asp.Net 来源:网络整理
导读:我需要从控制器发送一些值到共享视图以显示在顶部 [HttpPost] [Route("login")] public async TaskActionResult Login(LogInRequest logInRequest) { IEnumerableUserClaim UserClaims = null; User user = null; if (ModelState.IsValid) { user = await Ge
我需要从控制器发送一些值到共享视图以显示在顶部
[HttpPost] [Route("login")] public async Task<ActionResult> Login(LogInRequest logInRequest) { IEnumerable<UserClaim> UserClaims = null; User user = null; if (ModelState.IsValid) { user = await GetUserByEmailAndPassword(logInRequest.UserName,logInRequest.Password); if (user.Id != 0) { showMenu = await ShowLoanMenu(logInRequest); if (showMenu) { ******** I need to send showMenu and user.Name to shared view return RedirectToAction(Constants.Views.SearchView,Constants.Views.LoanDriverController); } } ..... return View(logInRequest); } 我不想使用TempData,viewdata,viewbag或session,我如何通过查询字符串或添加到模型来发送它. 这是布局之一: <ul> <li class="logo"> <img src="~/Content/Images/logo.png" alt="" /> </li> <li class="nav-item"> *** @if(showmenu is true) { <ul> @Html.ActionLink("Loan Driver","Index","Home",new { area = "" },new { @class = "navbar-brand" }) </ul> } </li> </ul> 这是另一种布局: <div class="header"> <div class="master-container"> <div class="heading">Garage</div> <div class="primary-nav"> <ul> <li>******show name of the person</li> <li>@Html.ActionLink("Logout","logout","Home")</li> </ul> </div> </div> 解决方法
我想你想要当前的请求,而不是所有的请求,所以接受的答案不是正确的方法.要在单个请求的范围内与视图或子控制器共享数据,最简单的方法是将数据放入HttpContext.Items.在同一请求期间,所有视图和子控制器共享此项.
HttpContext.Items["UIOptions"] = new UIOptions { ShowMenu = true }; 您可以使用扩展名对此进行抽象: public static class HttpContextExtensions { public static UIOptions GetUIOptions(this HttpContext httpContext) { var options = httpContext.Items["UIOptions"] ?? (object) new UIOptions(); httpContext.Items["UIOptions"] = options; return options; } } 然后在您的控制器中,设置选项 HttpContext.GetUIOptions().ShowMenu= true 在您的视图中,像这样访问它: ViewContext.HttpContext.GetUIOptions() 我通常会进一步抽象,以便您使用类似的属性对其进行配置 [UIOptions(ShowMenu=true)] public ActionResult MyAction() { return View(); } 因此,您编写了一个ActionFilter,它检查操作的属性,并在ActionExecuting阶段使用属性属性设置httpContext.GetUIOptions()对象的属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- entity-framework – 生产服务器上的asp核心ef迁移
- .net – DotNetCore – 是否支持ApiExplorer,以及如何使用它
- asp.net – 如何修复在IIS中运行的Web服务中的“请求格式无
- ASP.NET MVC 实现简单的登录
- asp.net – 如何使用webgrease?
- asp.net – 在发布Web应用程序时如何包含未引用的dll?
- asp.net-mvc-3 – WebGrid列中的MVC3 Html.BeginForm?
- asp.net – 在中等信任下,在GMail SMTP上发送电子邮件
- asp.net – 如何在web.config中迭代自定义键?
- asp.net – Fulltext Query String的全文查询参数无效
推荐文章
站长推荐
- asp.net核心 – 无法在IISExpress中启动ASP.NET
- 解决“这个操作需要IIS集成管道模式”在ASP.net
- 为什么只读文本框不会在ASP.NET中返回任何数据?
- asp.net – 最佳DotNetNuke网址重写方法?
- 在asp.net中将大量数据导出到客户端
- asp.net – 实现自定义成员资格提供程序成员资格
- 如何处理在MVC视图中应用程序启动和传输和显示错
- asp.net – ASMX Web服务对传入请求使用错误编码
- asp.net-core – JsonConvert DataSet .NET Core
- asp.net – 在Response.Redirect()之后调用Respo
热点阅读