簡體   English   中英

asp.net mvc中JavaScriptResult的工作示例

[英]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代碼共享 所以我創建了一個返回JavaScriptResultAction ,它基本上將這些值抽出到全局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請求,該請求只是提供一些功能,這些功能將在響應時立即執行而無需任何數據操作。

你在哪里可以從中受益? 好吧想想一個應用程序,它在應用程序中使用了大量的各種客戶端類。 但某些頁面僅使用它們的一小部分(甚至是動態分裂)。 在這種情況下,您將有兩種可能性:

  1. 預先加載整個客戶端類樹 - 在一個巨大的單個文件中或在單獨的文件中碎片化(如果視圖使用一小組前面已知的類的子集,這將是正常的,因為否則會導致大量的服務器請求)
  2. 在需要時按需加載類 - 或者甚至可以根據需要在需要時執行某些類功能。

在這種特殊情況下,第二種情況在網絡流量,客戶端內存資源和處理器負載方面會更好,效率更高。

看看我在這篇文章中的回復;

MVC如何返回運行javascipt方法的指令?

這將返回頁面的部分視圖。 如果你想通過一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM