ASP.NET MVC 中使用JavaScriptResult

來源:互聯網
上載者:User

標籤:

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

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

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

在IE上是下載檔案

查看回應標頭資訊,Content Type 為application/x-javascript,返回的是js代碼。

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

可以使用this.Content輸出指令碼,彈出提示框,像這樣

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

當然,也可以視圖頁面上寫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頁面會彈出一個框

 

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

this.Content的傳回型別是ContentResult,this.JavaScript的傳回型別是JavaScriptResult,

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

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的回應標頭如下

/home/replacecontentmethod的回應標頭如下

可以看到,兩者是一樣的

ASP.NET MVC 中使用JavaScriptResult

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.