【发布时间】:2017-04-27 00:27:25
【问题描述】:
是否可以指示表单标签助手不对路由参数进行 URL 编码?
具体来说,我使用索引表示法在查询字符串中传递复杂类型。这在 API 项目中工作得非常好;控制器将其完美解析为 C# 对象(见下文)。
在今天的网站项目中,控制器从查询字符串中解析它而没有错误,但是如果我尝试将它提供给表单的标签助手(以便表单将该对象保留在后续 GET 的 URL 中),字符串是 URL 编码的。这看起来很糟糕,控制器不会将其解析回来。
我正在使用 ASP.NET Core 1.1
提前致谢。我四处寻找这个,但找不到解决方法;我确定我只是错过了它。
表格:
<form method="get"
asp-controller="Search"
asp-action="Index"
asp-route-object_id="@Model.Object.ID"
asp-route-s="@Model.serviceRequests">
对象:
public class ServiceRequest
{
public int id { get; set; }
public int seq { get; set; }
public List<int> addOns { get; set; }
public string employee { get; set; }
}
出现在动作方法定义中的对象:
[FromQuery] List<ServiceRequest> s
有效的 GET 请求示例:
/controller/action?s[0].id=358&s[1].id=9788&s[1].addOns[0]=93277
【问题讨论】:
标签: c# asp.net-mvc asp.net-core tag-helpers