2012-05-14 31 views
0
传递一个对象

有人可以帮助我走出我是新来的jQuery,我想知道我可以通过传递一个对象从控制器动作MVC如何从MVC控制器动作视图使用jquery

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

我想让它在jQuery函数中获得主题和徽标图像,我将用它来更新样式表中的类,该主题对象仅包含现在的十六进制形式的颜色。

如果有人能请帮我呼叫到jQuery的功能,我将如何暴露两个图像和jQuery的主题对象..谢谢

+0

对不起,在我的问题线的存在,不可能得到它的正确位置的结构。 – vudz

+0

您无法直接将服务器对象传递给JavaScript函数。然而,你可以做的是从加载页面到服务器进行Ajax调用,以返回对象 –

回答

0

这可能不是最好的解决办法,但一个选项我过去使用的是在您的视图中创建隐藏的input,并在您的jQuery代码中访问input的值。这将是代码的例子,你会在你的看法:

<input id="someID" type="hidden" value="@TempData["Theme"]" /> 
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); 
    }); 
}); 
+0

感谢Shyju,会试试这个并让你知道它是如何发生的。 – vudz

+0

再次感谢shyju它完美的作品,我试过这只是主题因为它给出了一个错误abt的大小的标志图像,我会排序一个,但再次感谢;)。 – vudz

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); 

然后在剃刀:

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

它输出到JavaScript代码:

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