在瀏覽器地址欄輸入地址,在頁面上想通過腳本彈出一個框,看到Controller下有個JavaScript方法,返回的類型是JavaScriptResult,於是想用這個方法彈出框,
public ActionResult Index() { return this.JavaScript("<script>alert(“操作成功')</script>"); }
訪問頁面時,在火狐上顯示的是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的響應頭如下
可以看到,兩者是一樣的