2012-05-14 71 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> 
相關問題