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语言 · 报时助手
    C语言 · 完美的代价
    C语言 · 十六进制转八进制
    C语言 · 十六进制转十进制
    C语言 · 芯片测试
    C语言 · 素数求和
    C语言 · 五次方数
    Lodop多分出空白页的可能(情况1)
    C-Lodop提示“网页还没下载完毕,请稍等一下再操作.”
    Lodop简答问答大全
  • 原文地址:https://www.cnblogs.com/lori/p/2291536.html
Copyright © 2011-2022 走看看