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

本文关键字:分配 ViewModel ViewData 对象 中将 MVC ASP Net 我们 | 更新日期: 2023-09-27 18:26:18

这个问题看起来很奇怪,但我正在使用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"] })

但是,如果用户想做AdvanceSearch,这是我自己的ViewModel,我如何通过回调将数据发回?如果可能的话?

    [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支持团队,但我仍在获得许可证,所以在那之前他们不会提供帮助

提前感谢

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

ViewData的类型为ViewDataDictionary,它实现了IDictionary<string,object>,正如您可以从相关的msdn文档页面中看到的那样。因此,您可以在其中存储任何类型的对象,尽管我个人更喜欢在大多数情况下返回视图模型。