【问题标题】:MVC - Passing a Type as an action parameterMVC - 将类型作为操作参数传递
【发布时间】:2011-04-14 15:21:24
【问题描述】:

我可以通过 HTML.ActionLink() 将 Type 参数传递给 MVC 中的 Action 方法吗?

例如

public ActionResult Get(Type containerType, string name)
{
            throw new NotImplementedException("vkag");
}

<%=Html.ActionLink(flow.Source.Name, "Get", new { containerType = typeof(Worksheet), name = flow.Source.Name})%>

由于某种原因,该类型始终为空。我也不能传回基本类型以允许在其位置传递子类型。

我不知道这是 HTML ActionLink Helper 还是 MVC 的限制。

我无法传递接口,我指定了一个基类型参数并使用子类型作为参数来代替基类型参数,而且我似乎无法将类型传回。我被困在这里了。

是否有另一个 HTML Helper 可以提供帮助?

我可以对模型绑定做些什么吗?

在将控制权传递给我的操作方法之前,我可以在 ActionLink 调用期间修改模型的状态吗?

有点卡在这里。任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: model-view-controller parameters types action


    【解决方案1】:

    如果您考虑一下,您可以传递给 Routes 的类型必须可以通过 URL 传递。

    您不能传递类型,因为它必须被序列化。为什么不将 containerType 作为字符串传递并在 action 中将其转换回 Type?

    【讨论】:

    • 谢谢Thomas,考虑到更喜欢使用类型而不是字符串。
    • 虽然,最终我试图让 NHibernate 根据传递给我的操作方法的类型从数据库中解析给定类型的数据。有道理为什么它不起作用,但很高兴有一个解决方法。
    • 你有很多类型吗?您可能会使用 Enum 并且应该正确序列化(我认为)
    • 嗯,目前实现接口的子类型有十个。因此需要获取有关从视图传回的类型的信息。我的视图模型有一组确认合同的子类型,并且理想情况下希望将 IContainer 接口接受到操作方法中,但由于显而易见的原因不能。尽管我不想这样做,但可能会移至类型名称以使事情发生变化,因为我想不出其他方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2019-02-27
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多