zoukankan      html  css  js  c++  java
  • 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

    可以看到,两者是一样的

  • 相关阅读:
    Keil 4 与 J-Link 8 连接配置
    嵌入式之认识内存
    Windows10光驱位硬盘不识别
    无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-l1-1-0.dll上
    博客一夜回到解放前
    电动汽车-电池
    STM32书集选择
    嵌入式—学习嵌入式系统需具备的条件、方法及步骤
    Modbus抄表中应用到CRC8+CRC16+CRC32源码
    USART输出乱码3F,RS485抄表
  • 原文地址:https://www.cnblogs.com/dandzm/p/4730853.html
Copyright © 2011-2022 走看看