[英]Working example for JavaScriptResult in asp.net mvc
有人可以在asp.net mvc中提供JavaScriptResult的工作示例。 據我所知,它返回javascript,然后在客戶端執行,並且響應的內容類型設置為text / javascript。 我需要一些有用的例子才能看到這件事。
注意:這個答案寫於2011年,現在看着它,它更像是一個黑客。 最好通過訪問JSON端點API的AJAX請求來加載值。
這是一個實際案例:我有一個GlobalSettings靜態C#類,它包含在ASP.NET MVC后端方面通過整個系統使用的值的靜態屬性。
其中一些值需要與JS代碼共享 。 所以我創建了一個返回JavaScriptResult的Action ,它基本上將這些值抽出到全局JS變量中。
注意:更改輸出緩存周期以滿足您的需要
[OutputCache(Duration = 999999)]
public virtual JavaScriptResult Global()
{
var script = $@"
MaxNotificaitonsToShow = {GlobalSettings.MaxNotificaitonsToShow};
ItemsPerPage = {GlobalSettings.ItemsPerPage};
";
return JavaScript(script);
}
然后我通過HTML頁腳在所有頁面中將此操作的響應加載為JS文件:
<script type="text/javascript" src="/JS/Global"></script>
現在我可以在任何Javascript文件中獲取值:
if(ItemsPerPage == 25)
{
alert('it works!');
}
JavaScriptResult被認為是Asp.net MVC引入的反模式(完全分離關注點),因為它將Controller和View重新組合在一起,使它們彼此可靠。 在純粹的Asp.net MVC應用程序中,UI構建在Asp.net MVC上,服務器端只為此客戶端實現服務,因此建議避免使用此功能。
它可能在其他場景中很有用。 我記得我一直在閱讀與Ruby on Rails客戶端相關的東西。
無論如何。
一個實際的例子是將javascript代碼返回給Ajax請求,該請求只是提供一些功能,這些功能將在響應時立即執行而無需任何數據操作。
你在哪里可以從中受益? 好吧想想一個應用程序,它在應用程序中使用了大量的各種客戶端類。 但某些頁面僅使用它們的一小部分(甚至是動態分裂)。 在這種情況下,您將有兩種可能性:
在這種特殊情況下,第二種情況在網絡流量,客戶端內存資源和處理器負載方面會更好,效率更高。
看看我在這篇文章中的回復;
這將返回頁面的部分視圖。 如果你想通過一個json對象進行迭代,那么從你的控制器返回一個json對象並使用類似下面的東西;
var obj = eval('(' + msg + ')');
上面的msg是來自控制器的返回對象;
然后,
$.each(obj.Objects, function() { do something with object });
上面的“對象”是返回的json對象中的屬性。
所以在c#中
public class JsonObject()
{
List<MyObjectList> Objects{get;set;}
}
將上述對象返回到視圖。
這有意義還是你想要一個工作樣本?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.