如何使用jquery将对象从mvc控制器操作传递到视图

时间:2012-05-14 20:39:20

标签: c# jquery asp.net-mvc

有人可以帮助我,我是jQuery的新手,我想知道如何从控制器动作MVC传递一个对象

public ActionResult UserGroupSetting()
{
    UserGroupSetting setting = //some code to retrieve the settings
    ViewData["Theme"] = setting.Theme;
    ViewData["Image"] = setting.LogoImage;
    returnView(setting);
}

我希望它能够在jQuery函数中获取主题和徽标图像,我将使用它来更新样式表中的类,主题对象目前只包含十六进制形式的颜色。

如果有人可以帮我调用jquery函数,我将如何在jquery中公开图像和主题对象..谢谢

3 个答案:

答案 0 :(得分:3)

您可以以jSon格式返回数据,让jquery使用getJSON方法调用您的操作方法

public ActionResult UserGroupSetting()
{
   var result=new { Theme="YourTheme", Logo="YourLogoURL"};
   return Json(result, JsonRequestBehavior.AllowGet);
}

在您的信息页中,通过javascript调用此信息

$(function(){
   $.getJSON('YourController/UserGroupSetting', function(data) {
      alert(data.Theme);
      alert(data.Logo);
   });
});

答案 1 :(得分:1)

如果我是你,我会这样做:

你可以使用ViewBag:in action:ViewBag.Setting = setting;

  UserGroupSetting setting = //some code to retrieve the settings
  ViewBag.Theme  = setting.Theme;
  ViewData.Image = setting.LogoImage;
  returnView(setting);

然后在Razor:

 @{
    var setting = (UserGroupSetting)ViewBag.Setting;
  }

将其输出到javascript代码:

  <script type="text/javascript">
        var setting = new setting{
                 Theme = @setting.Theme,
               Image = @setting.Image
        }
  </script>

答案 2 :(得分:0)

这可能不是最佳解决方案,但我过去使用的一个选项是在视图中创建隐藏的input并访问jQuery代码中input的值。这将是您在视图中可以使用的代码示例:

<input id="someID" type="hidden" value="@TempData["Theme"]" />