加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 20:56:03 所属栏目:asp.Net 来源:网络整理
导读:我希望有可能通过以下URL类型访问操作: http://localhost/MyControllerName/MyActionName/Id1+Id2+Id3+Id4等 并按以下方式在代码中处理它: public ActionResult MyActionName(string[] ids){ return View(ids);} 解决方法 是网址中的保留符号.这意味着白色
我希望有可能通过以下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}的默认路由定义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读