簡體   English   中英

Razor 頁面路由約定在 .net 中不起作用 7. vs2022

[英]Razor page routing convetion not working in .net 7. vs2022

不確定是我做錯了什么,還是 .net7 razor 頁面中的錯誤或更改。

當導航到帶有路線的頁面時。 該頁面加載正常並且在 url 中具有路由值,但不會使用這些值填充變量。

我的頁面指令是 @page "/flights/{SourceIATA?}/{DestinationIATA?}" 並且位於 Pages\Flights\Index.cshtml 中並且聲明了我的變量。

  public class IndexModel : PageModel
    {

        public string? SourceIATA { get; set; }

        public string? DestinationIATA { get; set; }

我正在使用 program.cs。

var builder = WebApplication.CreateBuilder(args);


// Add services to the container.
//builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(
builder.Configuration.GetConnectionString("DefaultConnection")) , ServiceLifetime.Transient,
                   ServiceLifetime.Transient);

builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
    .AddEntityFrameworkStores<ApplicationDbContext>();



builder.Services.Configure<RequestLocalizationOptions>(ops =>
{
    var cultures = new CultureInfo[] { new CultureInfo("en-US"), new CultureInfo("en-AU")
        , new CultureInfo("en-GB")
        , new CultureInfo("es-US")
    };
    ops.SupportedCultures = cultures;
    ops.SupportedUICultures = cultures;
    ops.DefaultRequestCulture = new Microsoft.AspNetCore.Localization.RequestCulture("en-US");
    ops.RequestCultureProviders.Insert(0, new RouteSegmentRequestCultureProvider(cultures));
});

builder.Services.AddHttpClient<ITranslator, MyMemoryTranslateService>();

builder.Services.Configure<CookiePolicyOptions>(options =>
{
    //gdpr
    // This lambda determines whether user consent for non-essential 
    // cookies is needed for a given request.
    options.CheckConsentNeeded = context => true;
    // requires using Microsoft.AspNetCore.Http;
    options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
    // options.MinimumSameSitePolicy = SameSiteMode.None;
});

builder.Services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");
builder.Services.AddAntiforgery(options =>
{
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
});

builder.Services.Configure<RouteOptions>(options =>
{
    options.LowercaseUrls = true;
    options.LowercaseQueryStrings = true;
   // options.AppendTrailingSlash = true;
   
});

builder.Services.AddRazorPages()
                .AddRazorPagesOptions(ops => { ops.Conventions.Insert(0, new RouteTemplateModelConventionRazorPages()); })
                .AddXDbLocalizer<ApplicationDbContext, MyMemoryTranslateService>(ops =>
                {
                    ops.AutoAddKeys = false;
                    ops.AutoTranslate = false;
                    ops.UseExpressMemoryCache = false;
                });
              


var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/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.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseRequestLocalization();
app.MapRazorPages();
app.Run();

有沒有人有任何與 .net 7 類似的東西,或者任何指向我正確方向的建議,我們將不勝感激。 提前致謝。

您可以嘗試使用[FromRoute]將路由數據與SourceIATADestinationIATA綁定:

[FromRoute]
public string? SourceIATA { get; set; }

[FromRoute]
public string? DestinationIATA { get; set; }

BindProperty屬性分配給您的 PageModel 屬性,您還必須將SupportsGet屬性指定為true

public class IndexModel : PageModel
{
    [BindProperty(SupportsGet=true)]
    public string? SourceIATA { get; set; }

    [BindProperty(SupportsGet=true)]
    public string? DestinationIATA { get; set; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM