Передать TempData между контроллерами для модального возврата Null? - PullRequest
0 голосов
/ 07 июля 2019

Я хочу передать некоторую строку между двумя контроллерами, чтобы показать успешный вход в систему через модал. Я читал следующие темы: ViewBag, ViewData и TempData а также RedirectToAction с параметром

, но это не работает для меня, и TempData возвращает Null.it отлично работает в этих контроллерах.

    public async Task<IActionResult> LoginConfirm(LoginViewModel model)
    {
        ApplicationUser user = await userManager.FindByNameAsync(model.Email);
        if (user!=null)
        {
            var status = await signInManager.PasswordSignInAsync(user, model.Pass,model.RememberMe,true);
            if (status.Succeeded)
            {
                TempData["msg"] = "You Login successful ";
                return RedirectToAction("Index","Home");
            }
        }
        TempData["msg"] = "Somethings Wrong!";

        return View("Login");
    }

Ответы [ 2 ]

1 голос
/ 07 июля 2019

у вас есть два способа

1) при использовании

services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });

вы включаете GDPR (Общее положение о защите данных) И так до тех пор, пока пользователь не примет вашеcookie, вы не сможете установить cookie на сайте.И это делает TempData пустым.

2) После перехода на ASP Core 2.1 у меня возникла эта проблема, и после работы в течение дня найдите решение:

в Startup.Configure () app.UseCookiePolicy.();должно быть после app.UseMVC ();

0 голосов
/ 07 июля 2019
namespace GiftSite
{
    public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
        services.AddAuthentication();
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

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

}

...