• 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

    可以看到,两者是一样的

  • 相关阅读:
    Python __repr__()方法:显示属性
    Python SQLAlchemy入门教程(基本用法)
    彻底搞懂Token、Session和Cookie。
    MTV和MVC的区别
    Flask配置Cors跨域
    跨域资源共享 CORS 详解
    浏览器同源政策及其规避方法
    敏捷开发
    Nginx搭建正向代理服务器支持https
    为什么使用k8s和容器作为devops的底层平台
  • 原文地址:https://www.cnblogs.com/dandzm/p/4730853.html
Copyright © 2020-2023  润新知