Razor 页面:重定向到另一个页面,第二个参数始终为 null

Razor pages: Redirecting to another page, second parameter is always null

我有一个带有以下 javascript 回调函数的简单页面:

function completeCallback(response) {                            
   // redirect to Result page
   window.location.href = '@Url.Page("/Result", new {result = "def", orderId = "abc"})';
}

我的目标是重定向到另一个传递两个参数的页面,resultorderId

这是我的 Result 页面的样子:

public class ResultModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public string orderId { get; set; }

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

    public void OnGet()
    {
        var res = result;
    }
}

我的问题是,虽然第一个参数设置正确,但 第二个 参数 orderId 在这种情况下 always 空。如果我这样交换参数:

window.location.href = '@Url.Page("/Result", new {orderId = "abc", result = "def"})';

orderId设置正确,result变为null

@Url.Page命令生成的url如下:

/Result?orderId=abc&result=def

这也是我尝试过的相同结果:

public void OnGet(string orderId, string result)
{
   var res = result;
}

自从我上次使用 .NET Core 3.1 以来已经有一段时间了,但我几乎可以肯定我以前使用过相同的代码而没有任何问题。现在,我正在使用 .NET 6.0。我在这里明显遗漏了什么吗?

问题是由于 &@Url.Page 转义为 &。为了处理这个问题,我将 @Url.Page 包裹在 @Html.Raw:

window.location.href = '@Html.Raw(Url.Page("/Result", new {orderId = "abc", result = "def"}))';