C# FromQuery属性的等效项

C# FromQuery属性的等效项,c#,asp.net,post,razor,C#,Asp.net,Post,Razor,我正在尝试使用ASP.NET使用Razor页面用简单表单构建一个简单页面,但无法解决如何处理特定的回发邮件。特别是(通过我无法控制的因素)我得到了一个带有单个查询参数的帖子,该参数是小写和烤串大小写的,在常规MVC页面中,我可以使用FromQuery属性,但是在这个例子中,它似乎不起作用,因为无论是否有属性,我每次都将null传递给OnPostAsync。举例说明这个问题如下: Example.cshtml @page @model my_namespace.Pages.ExampleModel

我正在尝试使用ASP.NET使用Razor页面用简单表单构建一个简单页面,但无法解决如何处理特定的回发邮件。特别是(通过我无法控制的因素)我得到了一个带有单个查询参数的帖子,该参数是小写和烤串大小写的,在常规MVC页面中,我可以使用
FromQuery
属性,但是在这个例子中,它似乎不起作用,因为无论是否有属性,我每次都将
null
传递给
OnPostAsync
。举例说明这个问题如下:

Example.cshtml

@page
@model my_namespace.Pages.ExampleModel
@{
    ViewData["Title"] = "Example Title";
}

<h2>Example</h2>

<form method="post">
    <!--- In actual code I don't have control of the name, so this is for illustrative purposes. --->
    <input type="text" name="kebabbed-name"/>
    <input type="submit" />
</form>
@page
@建模my_namespace.Pages.ExampleModel
@{
ViewData[“标题”]=“示例标题”;
}
例子
Example.cshtml.cs

using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

namespace my_namespace.Pages
{
    public class ExampleModel : PageModel
    {
        public async Task<IActionResult> OnGetAsync()
        {
            return Page();
        }

        // This method is hit as expected, but the parameter is always null.
        // Changing the input name to something like "sample" and this parameter to match works however.
        public async Task<IActionResult> OnPostAsync(string kebabbedName)
        {
            // Handling of the Post request
            return Page();
        }
}
使用系统;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.RazorPages;
名称空间my_namespace.Pages
{
公共类示例模型:PageModel
{
公共异步任务OnGetAsync()
{
返回页();
}
//此方法按预期命中,但参数始终为null。
//但是,将输入名称更改为“sample”之类的名称,并将此参数更改为匹配。
公共异步任务OnPostAsync(字符串kebabbedName)
{
//处理Post请求
返回页();
}
}

因此,我正在寻找一种方法来处理以该串名称作为参数的回发-欢迎任何解决方案。

看起来Razor pages无法自动处理串名称,但是您可以在
PageModel
类中创建一个属性,并使用一个自定义名称绑定回发值

// For GET request
// [BindProperty(Name = "kebabbed-name", SupportsGet = true)]

// For POST request
[BindProperty(Name = "kebabbed-name")]
public string kebabbedName { get; set; }

但在这种情况下,它似乎不起作用。请具体说明……您是否有任何错误或模型未正确绑定?尽管每次都会命中该方法,但我每次都将
null
作为值。我已相应地更新了问题,以使其更清楚。这很烦人,尽管您通常自己控制它们,我可以看到我通常不是问题。我已经尝试过你的解决方案,它可以正常工作。谢谢:)是的,我不认为这是一个常见的用例。它可能只在对后端的请求来自你无法控制的前端时才有用。这基本上就是我所处的情况——通过javascript从可信的外部源控制系统中减少控制要发布的数据。