我们可以将ViewModel分配给ASP.Net MVC中的ViewData对象吗?

时间:2014-10-13 10:40:52

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

问题似乎很奇怪,但我使用的是DevExpress库,我需要通过DevExpress BeginCallback事件将自己的对象(视图模型)发送到控制器动作。

基本上我有一个简单而先进的搜索,简单的搜索完美地工作,因为它只是一个字符串值

    [ValidateInput(false)]
    [Authorize]
    public ActionResult DevExpressGridView(string simple, AdvanceSearch adv)
    {
          ViewData["data"] = simple;
         ..Search Logic
    }

因此,当填充Gridview时,我想双击一行以从数据库中获取项目

    function CallBack(s, e) {

        e.customArgs['simple'] = "@ViewData["data"]";
    }

最后是Gridview Action方法

  @Html.Action("DevExpressGridView", new { simple = @ViewData["data"] })

但是如果用户想要做一个我自己的ViewModel的AdvanceSearch,我怎么能通过回调发回数据呢?如果可能的话?

    [ValidateInput(false)]
    [Authorize]
    public ActionResult DevExpressGridView(string simple, AdvanceSearch adv)
    {
          ViewData["data"] = adv;
         // Its my own type so it can't work can it?
    }

我会问DevExpress支持团队,但我仍然获得我的许可证,因此他们将无法提供帮助

提前致谢

1 个答案:

答案 0 :(得分:1)

ViewData属于ViewDataDictionary,其实现IDictionary<string,object>,您可以在relevant msdn documentation page中看到。所以你可以在其中存储任何类型的对象,但我个人反而更喜欢在大多数情况下返回一个viewmodel。