我的问题是美学问题。我有以下控制器:
[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; }
}
我的观点是,有一个下拉列表
应该
更改URL参数(以便按不同的EmployeeType进行筛选):
@model Tiendas.Models.EmployeesByTypeViewModel
<h2>Employees</h2>
<form asp-controller="Employees" asp-action="FilterByType" method="GET">
<select asp-for="EmployeeTypeID" asp-items="Model.EmployeeTypes">
</select>
<button type="submit">Filter</button>
</form>
//code displaying filtered employees...
然而,当我在
/Employees/FilterByType
我提交了它产生的表格,例如:
/Employees/FilterByType?EmployeeTypeID=3
而不是:
/Employees/FilterByType/3
这正是我想要的(从功能上看,两者都可以)。此外,如果我在上面键入URL,然后提交表单,我会得到以下结果:
/Employees/FilterByType/3?EmployeeTypeID=1
我怎样才能得到
漂亮的
URL参数而不是查询字符串?我正在使用属性路由。