如何制作一个正确调用使用泛型的动作的表单?

时间:2012-04-12 20:31:51

标签: c# asp.net-mvc-3 generics razor

在ASP.NET MVC3 C#中,我想要使用此签名进行操作:

public ActionResult Restore<T>(int entityId, string redirect) where T : class

我无法弄清楚如何通过用户操作从视图中正确调用此操作。是否可以从视图中传递类似的类型?

或许类似于:

 @using (Html.BeginForm("Restore", "Global", new { T = @m }))

在保留功能的同时签名可能会改变吗?

1 个答案:

答案 0 :(得分:2)

不,开箱即用是不可能的。它归结为路由代码不是通用类型感知。内部存储的泛型类型与代码中表示的不同,因为这些方法名称不会以相同的方式进行比较。

如果您编写了自己的扩展点,则可能会出现这种情况,但代码中可能存在其他问题,而这些问题不会出现这种情况。您还必须编写许多自己的辅助方法,而不是使用现有方法。

简而言之,我认为不值得尝试。