Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提交表单时,有没有办法生成路由值而不是查询参数?_C#_Asp.net_Asp.net Core_Razor Pages - Fatal编程技术网

C# 提交表单时,有没有办法生成路由值而不是查询参数?

C# 提交表单时,有没有办法生成路由值而不是查询参数?,c#,asp.net,asp.net-core,razor-pages,C#,Asp.net,Asp.net Core,Razor Pages,我有以下表格 <form method="get"> <div class="row"> <div class="col-md-4"> <div class="form-group"> <select asp-for="@Model.MonthCode" asp-items="@Model.InvoiceDates" class="form-control">

我有以下表格

<form method="get">
    <div class="row">
        <div class="col-md-4">
            <div class="form-group">
                <select asp-for="@Model.MonthCode" asp-items="@Model.InvoiceDates" class="form-control">
                </select>
            </div>
        </div>
        <div class="col-md-4">
            <div class="form-group">
                <button type="submit" class="btn btn-success">Update</button>
            </div>
        </div>
    </div>
</form>
我更喜欢URL:

https://localhost:44322/Invoices/24243

有没有办法让这段代码生成第二个URL?我希望我的用户不会得到参数的描述。

将路由参数名称放在razor页面的顶部
。cshtml
侧:

@page "{MonthCode}"
在后端,属性可以定义为:

[BindProperty(SupportsGet=true)]
公共int MonthCode{get;set;}

感觉更干净的解决方案可能是将
OnGetAsync()
中的代码提取到助手方法中,然后从
OnPostAsync()
调用该方法


除非
OnGetAsync()
的实现非常小,否则我通常避免在页面中放入太多逻辑。(我们曾经在web表单(.aspx页面)中尝试过,但结果并不理想!;-)

您可以对查询进行加密string@viveknuna:是的,我能做到。但我只是想知道是否有任何方法可以产生我喜欢的URL。这似乎不适合我。我已经有了
@page“{monthCode?}”
。我尝试添加
BindProperty
,但没有设置它(仍然为零)。而且URL是相同的。(虽然设置了my
OnGetAsync(int?monthCode)
的参数。)尝试不使用似乎没有任何区别的
Nullable。是否在启动时启用了端点<代码>app.UseEndpoints(端点=>{endpoints.MapRazorPages();})是<代码>app.UseEndpoints(端点=>{endpoints.MapRazorPages();})@page "{MonthCode}"