ASP.NET MVC 中使用JavaScriptResult


在瀏覽器地址欄輸入地址,在頁面上想通過腳本彈出一個框,看到Controller下有個JavaScript方法,返回的類型是JavaScriptResult,於是想用這個方法彈出框,

public ActionResult Index()
        { 
            return  this.JavaScript("<script>alert(“操作成功')</script>");
        }

訪問頁面時,在火狐上顯示的是js文本

image

在IE上是下載文件

image

查看響應頭信息,Content Type 為application/x-javascript,返回的是js代碼。

image

所以,不能訪問頁面時使用this.JavaScript輸出腳本,彈出提示框。

可以使用this.Content輸出腳本,彈出提示框,像這樣

public ActionResult Index()
        { 
            return  this.Content("<script>alert('操作成功')</script>");
        }

image

當然,也可以視圖頁面上寫js,同樣可以達到相同的效果。

那么,JavaScriptResult怎樣用呢,可以在頁面上使用jQuery方法  getScript,向服務器獲取js代碼,然后執行js代碼,所以服務端代碼就改成這樣

public ActionResult Index()
        {
            return this.JavaScript("alert('操作成功');");
        }

注意的是,不需要加上<script>標簽,所以不要寫成this.JavaScript(“<script>alert('操作成功');</script>”)。

那么在Index2頁面上這樣寫,請求/home/index

<script>
            $.getScript("/home/index");
        </script>

最后訪問/home/index2頁面會彈出一個框

image

 

那么this.Content和this.JavaScript有什么不同

this.Content的返回類型是ContentResult,this.JavaScript的返回類型是JavaScriptResult,

反編譯ContentResult和JavaScriptResult,可以看到不同之處

image

JavaScriptResult設置ContetTypew為application/x-javascript,而ContentResult可以自定義ContentType,

既然這樣,可以使用this.Content(“alert(‘操作成功’)”,“application/x-javascript,”)代替this.JavaScript(“alert(‘操作成功’)”)

public ActionResult Index()
        {
            return this.JavaScript("alert('操作成功');");
        }

        public ActionResult ReplaceContentMethod()
        {
            return this.Content("alert('操作成功');", "application/x-javascript");
        }

然后在Index2頁面使用getScript分別請求/home/index ,/home/replacecontentmethod,看下效果

/home/index的響應頭如下

image

/home/replacecontentmethod的響應頭如下

image

可以看到,兩者是一樣的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM