【问题标题】:Prevent ASP.NET Core MVC Form Tag Helper from Encoding Array in GET Querystring防止 ASP.NET Core MVC 表单标记帮助程序在 GET Querystring 中编码数组
【发布时间】: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


    【解决方案1】:

    每当您执行 @XYZ 时,您就是在告诉 Razor 编码 XYZ。要解决此问题,您可以执行@Html.Raw(XYZ)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      相关资源
      最近更新 更多