首页 新闻 会员 周边

MVC的_Layout页面如何传数据?

0
悬赏园豆:50 [已解决问题] 解决于 2020-01-23 17:21

有个A控制器,A页面,B控制器,B页面,
Shared文件夹有个_Layout页面作为所有页面的模板,打开任何页面都有_Layout作为部分页面
现在在B控制器有数据,完成后跳转A页面,同时还要B控制器的数据传向_Layout页面并显示,
现在_Layout页面没有控制器,B控制器B页面与_Layout页面没有任何关联,
怎么传数据呢?
ViewBag,Viewdata,model传的数据都是控制器跟页面对应,
如果不对应没法传?

问题补充:

我发现传不了值得原因是控制器使用了
[HttpPost]
[ValidateAntiForgeryToken]
请问有人知道控制器在这种情况下怎么传?

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)//登录
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
if (result.Succeeded)
{
_logger.LogInformation("Logged in {userName}.", model.UserName);
ViewBag.hello = "123";//假设传个123
return RedirectToAction("Index", "Note");
}

_Lyaout页面 <a class="blog-nav-item" href="#">@ViewBag.hello</a>

登录控制器在登录后不会有数据传到页面

力揽狂澜的主页 力揽狂澜 | 初学一级 | 园豆:51
提问于:2020-01-12 11:52

这个传值是没有局限的吧? 你用了 ViewBag 试过?看看你的传值方式

Cgrain 4年前

@Cgrain: 我试了过好多次了,不明白为什么不行

力揽狂澜 4年前

@力揽狂澜:

_logger.LogInformation("Logged in {userName}.", model.UserName);
------------进入下面了没有?-----------
ViewBag.hello = "123";//假设传个123 --viewBag.hello 有值嘛?
return RedirectToAction("Index", "Note");
}

_Lyaout页面
你这里直接 @viewbag.hello ,或者f12 看看 是不是给这个class 的css 是不是display:none;
<a class="blog-nav-item" href="#">@ViewBag.hello</a>

--------------tips--------------
或者你在写个测试的控制器,引用layout ,viewbag 一下,看看有没有这问题

Cgrain 4年前

@Cgrain:登录后进入下面了,viewBag.hello在控制器里面是有值,在外面没有值,CSS没什么关系,这样也不行<a>@ViewBag.hello</a> ,
我其他控制器没有[HttpPost]
[ValidateAntiForgeryToken]可以传给_Lyaout

力揽狂澜 4年前

@Cgrain: 登录控制器ViewBag.hello 拿到值后,在其他控制器下使用ViewBag.hello 是空的。

力揽狂澜 4年前

@力揽狂澜: https://www.codebye.com/redirecttoaction-after-viewbag-mvc-is-empty.html dudu 大佬说对了 应该要这样

Cgrain 4年前

是 RedirectToAction 引起的

dudu 4年前

@Cgrain: 使用TempData[""]可以在页面显示,但是跳到其他页面就会数据就会没有了
,我需要一直显示这个数据,我应该怎么改?

力揽狂澜 4年前

@力揽狂澜: Sesstion 或者Cookie

Cgrain 4年前

@Cgrain: 有没有Cookie使用的例子,参考一下

力揽狂澜 4年前

@力揽狂澜: https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=2&tn=baiduhome_pg&wd=net%20%E4%B8%AD%20cookie%20%E7%9A%84%E4%BD%BF%E7%94%A8&rsv_spt=1&oq=net%2520%25E4%25BD%25BF%25E7%2594%25A8cookie&rsv_pq=a0844bc700099559&rsv_t=30cfZix4NhFa%2FpC4yrDFJilj%2FkkouMwcPcomtHw%2BhDRTzYm%2Fgum28pEz6qhoyUYYlZgs&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=11&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&inputT=4405&rsv_sug4=4978

Cgrain 4年前

@Cgrain: HttpCookie myCookie = new HttpCookie("UserSettings");
这样建立Cookie对吗?我看很多都是这样写的,但是我写有错误
错误:未能找到类型或命名空间名“HttpCookie”(是否缺少 using 指令或程序集引用?)
要添加System.Web.dll,但是并在项目引用没有找到System.Web.dll,是否还需要添加其他库?

力揽狂澜 4年前

@力揽狂澜: 引用就行了 ,很简单

Cgrain 4年前

@Cgrain: 没有找到可以引用,我换了一种写法

力揽狂澜 4年前
< >
分享
最佳答案
0

这样?

收获园豆:45
永远跟党走i | 小虾三级 |园豆:1519 | 2020-01-12 11:58
其他回答(1)
0

ViewBag,Viewdata,ViewModel 都可以传

收获园豆:5
dudu | 园豆:31003 (高人七级) | 2020-01-12 13:03

RedirectToAction 引起的

支持(0) 反对(0) dudu | 园豆:31003 (高人七级) | 2020-01-12 14:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册