zoukankan      html  css  js  c++  java
  • MVC中如何在controller的action中输出JS到页面上

    编辑器加载中...这个问题有点怪,不过这是项目开发时一个同事问我的问题,实现上完成这个需要很容易, 通过HTTP上下文对象(HttpContext)就可以了. 你在action中的HttpContext就是这个action所指向的页面的上下文,所以向页面输出JS,我们可以这样实现

    HttpContext.Response.Output.Write("<script>alert('OK,呵呵')</script>");

    这个意思是说,将write()里的文本流追加到当前HTTP响应流中。

    小知识:在ASPX中输出文本信息我们通常会这样实现

    
    
    <% Html.RenderPartial("lori");//当前controller下的lori分部视图或者shared目录下的分部视图 %>
    <%= "lori.zhang" %>

    <%
    Response.Write("lori.zhang"); //方法 %>

    <% %>中包含了.net的语句,本身不是用来表示输出的,那么为什么刚才代码中的Html.RenderPartial方法也会生成页面内容 呢?那是因为RenderPartial方法直接向当前HttpContext.Response.Output里写入字符了。而我们用 Response.Write来输出内容,其实在Response类(HttpResponseBase,可提供来自 ASP.NET 操作的 HTTP 响应信息,它是抽象类)的Write方法内部就是输出到Output中。

    
    

    即使我们的页面中使用了HtmlTextWriter来输出内容,但它内部也是封装了Output所暴露出的TextWriter中。为了 验证,您可以在代码中设置断点并观察Render方法的writer参数,在“正常情况下”可以发现writer.InnerWriter属性是一个 HttpWriter对象,这是个TextWriter的子类,也是ASP.NET中定义的内部类型。

    <%=%>与<%response.write()%>的区别

    它们输出到页面的效果是一样的。但是实际上前者是使用页面的HtmlTextWriter对象输出的,而后者则直接向Response.Output里输 出内容。(节选自,老赵点滴)


  • 相关阅读:
    【C++缺省函数】 空类默认产生的6个类成员函数
    iOS 关于 UIKit 专栏应该写在最前面的话
    openssl之EVP系列之8---EVP_Digest系列函数具体解释
    二进制中1的个数
    UVA 548(二叉树重建与遍历)
    Leetcode Best Time to Buy and Sell Stock III
    javascript new Date()函数在不同浏览器上返回不同的值
    【网络流】 HDU 3468 Treasure Hunting
    树莓派玩耍笔记1 -- 开箱 &amp; 安装系统以及简单配置
    POJ 1195 Mobile phones (二维树状数组)
  • 原文地址:https://www.cnblogs.com/lori/p/2291536.html
Copyright © 2011-2022 走看看