如何解决了解 ASP Net Core 生成的 URL 标记助手 [FromRoute] 或 [FromQuery]
我遇到了这个问题,即从视图中生成 URL 时与 ASP Net Core 不一致。
我将用 2 个案例来描述我的问题。请注意 View
中有标签助手 asp-route-....
。我尝试更改 asp-route-....
中的变量名称,结果发现它生成了不一致的 URL
案例 1:
查看
<a asp-action="Edit" asp-route-p_id="@item.CustomerContactInfoId" >Edit</a>
生成的网址
localhost/CustomerContactInfo/Edit?p_id=1 // So in controller I have to use FromQuery instead of Fromroute
控制器
public async Task<IActionResult> Edit([FromQuery(Name ="p_id")]int? p_id)
//OR
public async Task<IActionResult> Edit(int? p_id)
问题=为什么生成的网址不是这样
localhost/CustomerContactInfo/1
情况 2:
查看
<a asp-action="Edit" asp-route-id="@item.CustomerContactInfoId" >Edit</a>
生成的网址
localhost/CustomerContactInfo/1 // So in controller I have to use Fromroute instead of From
控制器
public async Task<IActionResult> Edit([Fromroute(Name ="id")]int? p_id)
//OR
public async Task<IActionResult> Edit(int? id)
问题=为什么生成的网址不是这样
localhost/CustomerContactInfo/Edit?id=1
解决方法
事实证明,路由参数的默认名称是 id
,正如您在此处的 Startup.cs
configure()
方法中看到的
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",template: "{controller=Home}/{action=Index}/{id?}");
});
然后
如果您将 {id?}
更改为 {p_id?}
,根据您在 Case 1
中的问题,它将是
/*-------In View--------------*/
<a asp-action="Edit" asp-route-p_id="@item.CustomerContactInfoId" >Edit</a>
/*------Generated URL---------*/
localhost/CustomerContactInfo/1
/*------In controller---------*/
public async Task<IActionResult> Edit([FromRoute(Name ="p_id")]int? p_id)
//OR
public async Task<IActionResult> Edit(int? p_id)
在 Case 2
将是
/*-------In View--------------*/
<a asp-action="Edit" asp-route-id="@item.CustomerContactInfoId" >Edit</a>
/*------Generated URL---------*/
localhost/CustomerContactInfo/Edit?id=1
/*------In controller---------*/
public async Task<IActionResult> Edit([FromRoute(Name ="p_id")]int? p_id)
//OR
public async Task<IActionResult> Edit(int? p_id)
中找到说明版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。