Asp.net core mvc ASP.NET核心MVC:如何将查询字符串参数更改为“漂亮”URL参数?

Asp.net core mvc ASP.NET核心MVC:如何将查询字符串参数更改为“漂亮”URL参数?,asp.net-core-mvc,asp.net-mvc-routing,Asp.net Core Mvc,Asp.net Mvc Routing,我的问题是美学问题。我有以下控制器: [HttpGet("[action]/{EmployeeTypeID:int?}")] public IActionResult FilterByType(int EmployeeTypeID = 1) { ... } 当我转到以下路线时调用,例如: /Employees/FilterByType /Employees/FilterByType/2 太好了。控制器将以下ViewModel返回到视图: public class EmployeesByTyp

我的问题是美学问题。我有以下控制器:

[HttpGet("[action]/{EmployeeTypeID:int?}")]
public IActionResult FilterByType(int EmployeeTypeID = 1)
{ ... }
当我转到以下路线时调用,例如:

/Employees/FilterByType
/Employees/FilterByType/2
太好了。控制器将以下ViewModel返回到视图:

public class EmployeesByTypeViewModel
{
    public IEnumerable<Employee> FilteredEmployees { get; set; }
    public IEnumerable<SelectListItem> EmployeeTypes { get; set; }
    public int EmployeeTypeID { get; set; }
}
而不是:

/Employees/FilterByType/3
这正是我想要的功能和工作。此外,如果我在上面键入URL,然后提交表单,我会得到以下结果:

/Employees/FilterByType/3?EmployeeTypeID=1

如何获得一个漂亮的URL参数而不是查询字符串?我正在使用属性路由。

您有一个表单正在生成GET。浏览器不了解管线定义,根据标准,任何表单控件的值都将添加为查询字符串值

例如,如果要生成/Employees/FilterByType/3,则需要javascript/jquery生成url,location.href进行重定向

$'form'.submitFunction{ e、 preventDefault;//取消默认操作 baseUrl='@Url.ActionFilterByType,Employees'; var selectedEmployee=$'EmployeeTypeID'.val; location.href=baseUrl+'/'+selectedEmployee;//重定向 };
/Employees/FilterByType/3
/Employees/FilterByType/3?EmployeeTypeID=1