【问题标题】:Using [Bind(Prefix="xyz")] at controller level?在控制器级别使用 [Bind(Prefix="xyz")]?
【发布时间】:2016-08-28 18:02:51
【问题描述】:

我有一组标准路由,跨控制器使用,例如 {controller}/{action}/{clientId}/{id}。所有控制器都使用这些值中的每一个,但每个控制器可能在不同的上下文中使用 {id}。

例如,LabController 上的 {id} 可能是“labId”,而 MembershipController 上的 {id} 可能是“membershipId”等。我不会在每个控制器上的每个操作方法中使用“id”,而是喜欢传入“labId”和“membershipId”作为各自控制器中操作的参数。

我可以为每个动作使用 [Bind(Prefix="id")],但我希望有一种方法可以在控制器级别控制它。我还试图避免类似路径的多条(几乎相同)路线。谢谢。

编辑:澄清一下,我正在尝试将这些绑定到我的操作参数。如:

public ActionResult GetLab(int labId)

public ActionResult GetMembership(int membershipId)

全部使用相同的路由 - 只需将 {id} 部分绑定为在这些情况下 labId 和 membersId 的别名,而不必每次都使用 [Bind]。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-routing


    【解决方案1】:

    您根本不需要将参数名称绑定到路由。请记住,通用“id”参数名称只是传入值的占位符。所以你的路线变成:

    Lab/SomeAction/1
    

    Membership/SomeAction/1
    

    在这种情况下,它不关心参数名称是什么。您更多地考虑查询字符串参数而不是路由参数。

    【讨论】:

    • 路由字典中的值有名称,但映射到我的操作的参数。意思是,{labId} 映射到我的操作上的“int labId”,就像 {membershipId} 映射到另一个操作上的“int membersId”一样。路由都是相同的模式(控制器/操作/clientid/id),但我希望能够根据控制器将“id”映射到不同的名称,这样我就不必在每种情况下都使用 [Bind] .
    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 2021-12-12
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多