我有一个MVC网站项目。 我在控制器actionresult中有一个搜索类
public ActionResult Index(SearchModel search, int? pageNumber, string sortOrder)
public int? Year {get;set;}
public String[] Status {get;set;}
public DateTime? Start {get;set;}
public DateTime? End {get;set;}
使用操作链接在我的视图中对表执行排序我得到了符号 %26和%3D
我执行此代码
@Html.ActionLink("year", "Index", new
{
sortOrder = ViewBag.Year,
Year = Request.QueryString["year"],
Status = string.Join("&Status=", statusSelected.Select(x => x)),
start= Request.QueryString["start"],
end= Request.QueryString["end"]
},
new { title = "sort by year" })
我该如何解决
THKS
答案 0 :(得分:0)
似乎标准参数绑定无法在默认RouteValueDictionary
上正确应用,因为您在这种情况下手动生成查询字符串,如下所示: -
string.Join("&Status=", statusSelected.Select(x => x))
我相信您已经知道默认情况下会对URL字符串进行编码,因此Status
- “&”中的字符会被编码和“=”分别编码为“%26”和“%3D”。
因此,替代方法之一是将SearchModel.cs
的{{1}}更改为接受Status
而不是String
并手动转换回字符串数组: -
Status = string.Join(",", statusSelected.Select(x => x))
var statusList = HttpUtility.UrlDecode(search.Status).Split(',');
我承认这是一个快速&脏的解决方案,因为它是最简单的解决方法,而不使用自定义数据绑定器。
答案 1 :(得分:0)
我解决了这个问题
<a href="@(Url.Action("Index", "Home", new { year=ViewBag.Year....})
+(string.Join(“&amp; status =”,statusSelected.Select(x =&gt; Url.Encode(x.tostring()))“&gt; year
简而言之,我连接了网址
它可以工作,但pheraps很脏 我用手写的代码,可能是错的 我希望能帮助别人