asp.net-mvc – MVC传递ID由“”分隔为动作

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – MVC传递ID由“”分隔为动作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望有可能通过以下URL类型访问操作:

http://localhost/MyControllerName/MyActionName/Id1+Id2+Id3+Id4

并按以下方式在代码中处理它:

public ActionResult MyActionName(string[] ids)
{
  return View(ids);
}

解决方法

是网址中的保留符号.这意味着白色空间.因此,为了实现您所寻找的目标,您可以编写自定义模型绑定器:
public class StringModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
    {
        var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (value != null && !string.IsNullOrEmpty(value.AttemptedValue))
        {
            return value.AttemptedValue.Split(' ');
        }
        return base.BindModel(controllerContext,bindingContext);
    }
}

然后全局注册string []类型或使用ModelBinder属性

public ActionResult MyActionName(
    [ModelBinder(typeof(StringModelBinder))] string[] ids
)
{
    return View(ids);
}

显然,如果你想使用形式为/ MyControllerName / MyActionName / Id1 Id2 Id3 Id4的url将最后一部分绑定为一个名为ids的动作参数,你必须修改使用{id}的默认路由定义.

猜你在找的asp.Net相关文章