果园寻呼机弄乱了我的查询字符串

时间:2014-04-29 14:39:57

标签: c# asp.net-mvc query-string orchardcms

我试图让我的视图工作,它是如何工作的,你可以选择一些不同的分支,然后用它们来过滤搜索结果。现在,当我按下过滤器按钮时,这可以正常工作

这是查询字符串

/Search?Ref=&Keyword=&StartDate=&Branches=3299374&Branches=38087&Branches=38090&Branches=38093&Branches=38095

但是当我点击寻呼机转到另一个寻呼机时,查询字符串会变为此

/Search?Branches=3299374%2C38087%2C38090%2C38093%2C38095&page=2

如何阻止寻呼机执行此操作?我认为它是对我的查询字符串进行编码,但我并非100%确定。

此外,我还尝试创建一个名为Pager_Next.cshtml的形状视图

@{
    var pBranches = Request.QueryString["branches"];
    var RouteValues = (object)Model.RouteValues;
    RouteValueDictionary rvd;
    if (RouteValues == null) {
        rvd = new RouteValueDictionary();
    }
    else {
        rvd = RouteValues is RouteValueDictionary ? (RouteValueDictionary)RouteValues : new RouteValueDictionary(RouteValues);
    }
}
<a class="newer" href="@Url.Action((string)rvd["action"], rvd)">Newer articles</a>

但这仍然有相同的结果

1 个答案:

答案 0 :(得分:1)

只是为了让其他人知道他们是否遇到此问题。我创建了一个模型绑定器,

The ModelBinder code looks like this 

    public class CommaSeparatedLongArrayModelBinder : DefaultModelBinder
    {
        public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            var values = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
            if (values != null && !string.IsNullOrEmpty(values.AttemptedValue))
            {
                // TODO: A minimum of error handling would be nice here
                return values.AttemptedValue.Split(',').Select(x => long.Parse(x)).ToArray();
            }
            return base.BindModel(controllerContext, bindingContext);
        }
    }

在我的控制器中我使用了这个

Binders[typeof(long[])] = new CommaSeparatedLongArrayModelBinder();
相关问题