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"})';
}
我的目标是重定向到另一个传递两个参数的页面,result
和 orderId
。
这是我的 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"}))';
我有一个带有以下 javascript 回调函数的简单页面:
function completeCallback(response) {
// redirect to Result page
window.location.href = '@Url.Page("/Result", new {result = "def", orderId = "abc"})';
}
我的目标是重定向到另一个传递两个参数的页面,result
和 orderId
。
这是我的 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"}))';