首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TempData传递RedirectToAction

用TempData传递RedirectToAction
EN

Stack Overflow用户
提问于 2017-01-05 18:58:57
回答 5查看 16.5K关注 0票数 14

简介:我是一名.NET学生,试图学习ASP.NET Core。所以请谅解。我在网上搜索了我的问题的答案,但没有找到一个对我有用的解决方案。

问题:无论何时创建了post,我都想将验证消息从create方法传递给索引IActionmethod,现在他们将其显示为警告消息。我在网上读到,ViewBag剂量在重定向中存活下来,但TempData确实存在。到目前为止这是我的密码。

创建post方法:

代码语言:javascript
复制
 public IActionResult CreatePost(string textContent, string headline, string type)
    {

        var catType = new Category() { CategoryType = type.ToUpper() };

        if (db.Category.Any(s => s.CategoryType.Trim().ToLower() == type.Trim().ToLower()))
            catType = db.Category.FirstOrDefault(s => s.CategoryType.Trim().ToLower() == type.Trim().ToLower());


        var newPost = new Post()
        {
            Content = textContent,
            Header = headline,
            DateOfPost = DateTime.Now,
            category = catType

        };
        db.Posts.Add(newPost);
        db.SaveChanges();

        TempData["validation"] = "Your post hase been publsihed";

        return RedirectToAction("Index");
    }

指数法:

代码语言:javascript
复制
public IActionResult Index()
        {

        var validation = TempData["validation"];

            var posts = (from x in db.Posts
                         orderby x.DateOfPost descending
                         orderby x.PostID descending
                         select x);

            return View(posts);
        }

我已经尝试过这个指南:ClickThis和这个:ClickThis2,但是我收到了这样的消息:

我知道这一行从古迪2号可能很重要,但现在不知道如何应用它。-

var product = TempData["myTempData"] as Product;

我最不想做的就是把它传递给索引视图,但是不知道怎么做。我目前正在从索引中传递一个模型。

告诉我你还想看什么。就像依赖关系。

我得到的一切帮助都是金子,我会非常感激的!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-01-06 06:37:05

配置会话了吗?TempData在幕后使用会话。

Project.json

代码语言:javascript
复制
"Microsoft.AspNetCore.Session": "1.1.0"

这是Startup.cs文件。- ConfigureServices

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
     services.AddMemoryCache();
     services.AddSession();
     services.AddMvc();
}

Configure法。

代码语言:javascript
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    app.UseSession();
    app.UseMvc(routes => {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
    });
}

现在尝试使用TempData,它会起作用的。

并且可以使用set ASPNETCORE_ENVIRONMENT=Development环境变量设置环境。

票数 14
EN

Stack Overflow用户

发布于 2018-08-15 19:31:31

我在谷歌上搜索"asp.net核心重定向到动作诱饵“时,发现了这个问题。我找到了答案,并将其张贴在这里,以供后人使用。

问题

我的问题是,在输入一些TempData值并调用RedirectToAction()之后,TempData将在重定向到的页面上为空。

溶液

根据HamedH的答案这里:如果您正在运行ASP.NET Core2.1,打开您的Startup.cs文件并确保在您的Configure()方法中app.UseCookiePolicy();app.UseMVC();之后。

示例:

代码语言:javascript
复制
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    ...

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller=Home}/{action=Index}/{id?}");
        });
    }

    app.UseCookiePolicy();
}
票数 33
EN

Stack Overflow用户

发布于 2017-01-05 19:42:51

TempData在用户会话下存储数据服务器端.您需要启用会话(正如异常消息所述)。检查本手册

如果您不想使用会话-您需要一些其他方式来存储数据(cookie?)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41492634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档