C#Razor局部页面动态更新标签文本

C#Razor局部页面动态更新标签文本,c#,asp.net-core,razor-pages,.net-5,C#,Asp.net Core,Razor Pages,.net 5,我在.Net5中有一个C#Razor应用程序。在这个应用程序中,我有一个没有模型的部分页面。在其中,我需要动态分配链接的文本。然而,没有一个模型,我不知道如何最好地去做这件事 该值在用户在应用程序中的持续时间内保持不变。但是,对于不同的用户,该值将不同 我可以将该值保存在cookie中,并在部分页面中检索它吗?或者有更好的方法吗?您可以在razor视图/页面中设置和获取会话,如下所示: @using Microsoft.AspNetCore.Http @inject IHttpContextAc

我在.Net5中有一个C#Razor应用程序。在这个应用程序中,我有一个没有模型的部分页面。在其中,我需要动态分配链接的文本。然而,没有一个模型,我不知道如何最好地去做这件事

该值在用户在应用程序中的持续时间内保持不变。但是,对于不同的用户,该值将不同


我可以将该值保存在cookie中,并在部分页面中检索它吗?或者有更好的方法吗?

您可以在razor视图/页面中设置和获取会话,如下所示:

@using Microsoft.AspNetCore.Http
@inject IHttpContextAccessor HttpContextAccessor
@{
    HttpContextAccessor.HttpContext.Session.SetString("KeyName", "aaaa"); 
}
@HttpContextAccessor.HttpContext.Session.GetString("KeyName")
确保在Startup.cs中注册会话和HttpContextAccessor:

public class Startup
{
    //...
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddSession();
        services.AddHttpContextAccessor();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseAuthentication();
        app.UseAuthorization();

        app.UseSession();  //be sure add this...

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapRazorPages();
        });
    }
}

你在用MVC吗?如果是这样,您有ViewBag、ViewData或TempData。否则,如果是webform应用程序,请使用会话和服务器端标记。由于部分页面是从_布局页面查询的,我忘了提到,这意味着在随后的页面加载中,值已经丢失。除非我在每一页上都重置它,但我不会这样做。了解如何在MVC中使用会话。