有个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>
登录控制器在登录后不会有数据传到页面
这样?
ViewBag,Viewdata,ViewModel 都可以传
是 RedirectToAction
引起的
这个传值是没有局限的吧? 你用了 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--------------
– Cgrain 4年前或者你在写个测试的控制器,引用layout ,viewbag 一下,看看有没有这问题
@Cgrain:登录后进入下面了,viewBag.hello在控制器里面是有值,在外面没有值,CSS没什么关系,这样也不行<a>@ViewBag.hello</a> ,
– 力揽狂澜 4年前我其他控制器没有[HttpPost]
[ValidateAntiForgeryToken]可以传给_Lyaout
@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");
– 力揽狂澜 4年前这样建立Cookie对吗?我看很多都是这样写的,但是我写有错误
错误:未能找到类型或命名空间名“HttpCookie”(是否缺少 using 指令或程序集引用?)
要添加System.Web.dll,但是并在项目引用没有找到System.Web.dll,是否还需要添加其他库?
@力揽狂澜: 引用就行了 ,很简单
– Cgrain 4年前@Cgrain: 没有找到可以引用,我换了一种写法
– 力揽狂澜 4年前