有人可以帮助我,我是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中公开图像和主题对象..谢谢
答案 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"]" />