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

asp.net mvc路由id参数

发布时间:2020-12-15 23:10:32 所属栏目:asp.Net 来源:网络整理
导读:我在asp.net mvc上的一个网站上工作.我有路线 routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional } // Parameter defaults); 这是默
我在asp.net mvc上的一个网站上工作.我有路线
routes.MapRoute(
    "Default",// Route name
    "{controller}/{action}/{id}",// URL with parameters
    new { controller = "Home",action = "Index",id = UrlParameter.Optional }
    // Parameter defaults
);

这是默认路由.我有一个方法

public ActionResult ErrorPage(int errorno)
{
    return View();
}

现在,我想用http://something/mycontroller/Errorpage/1运行这个代码
它不工作但是如果将参数名称更改为来自errorno的id
有用.

这个方法有相同的参数名称是强制的吗?还是需要为这种情况创建单独的路线?

解决方法

因此,您有一个名为errorno的参数,并且您希望它具有参数id的值.这显然是有约束力的问题.

如何解决:

>为模型绑定器创建一个类:

public class ParameterBinder : IModelBinder
{
    public string ActualParameter { get; private set; }

    public ParameterBinder(string actualParameter)
    {
        this.ActualParameter = actualParameter;
    }

    public object BindModel(ControllerContext controllerContext,ModelBindingContext bindingContext)
    {
        object id = controllerContext.RouteData.Values[this.ActualParameter];
        return id;
    }
}

>为自定义模型绑定创建自定义属性:

[AttributeUsage(AttributeTargets.Parameter)]
public class BindParameterAttribute : CustomModelBinderAttribute
{
    public string ActualParameter { get; private set; }

    public BindParameterAttribute(string actualParameter)
    {
        this.ActualParameter = actualParameter;
    }

    public override IModelBinder GetBinder()
    {
        return new ParameterBinder(this.ActualParameter);
    }
}

>根据需要将新属性应用于您的动作参数:

public ActionResult ErrorPage(
[BindParameter("id")]
int errorno)
{
    return View();
}

现在你的errnoo会有这个值,它被传递给你的url的id.

注意:您可以从上述示例中删除参数id,如果您确定只需要为id解决问题.

离开这种方式将允许你绑定其他参数.

(编辑:李大同)

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

    推荐文章
      热点阅读