在控制器级别使用[Bind(Prefix =“xyz”)]?

时间:2015-07-27 14:23:08

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

我有一套标准的路由,用于控制器,例如{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和membershipId,而不必每次都使用[Bind]。

1 个答案:

答案 0 :(得分:0)

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

Lab/SomeAction/1

Membership/SomeAction/1

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