• flex 与asp.net 配合之道


    1.将flex编译后的程序插入到asp.net页面

    flex的最终输出就是一张网页+一个flash(.swf文件)
    就是用他生成的网页的方式把那个.swf文件插入asp.net页面就可以了。

    flex3项目名字叫TestApp,最简单直接的办法就是,
    把"bin-debug"目录下的:
    TestApp.html
    TestApp.swf
    AC_OETags.js
    playerProductInstall.swf
    这4个文件复制到asp.net网站下面,打开TestApp.html,把内容复制到asp.net程序页面(.aspx文件)中。
    比如Default.aspx:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    //把TestApp.html的内容全部复制到这里
    //....
    //...

    总而言之FLEX3最后编译成了一个.swf文件而已,这个文件在网站里面插入的方法和普通的flash动画的那种.swf文件的使用方法是一样的。

    还有其他的要求:flex3程序和网页还有交互,请用"flex externalinterface"搜索

    2.flex程序与asp.net程序交互

    可以使用flex的Loader往asp.net发送请求,获取xml。
    也可以使用ExternalInterface和网页中的js交互,让js发送ajax请求到asp.net。

    下面有一实例,目标是:在flex端将数据Post到asp.net页面中,并将返回的xml数据显示出来

    //Asp.net端代码
    //getxml.aspx代码,保留一行即可,删除其他的html代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="getxml.aspx.cs" Inherits="getxml" %>

    //getxml.aspx.cs
    //using System...
    using System.Xml;
    public partial class getxml : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string user_pkid = System.Web.HttpContext.Current.Request.Form["user_pkid"];
            if user_pkid != null)
            {
                 CreateXml();//创建Xml的方法,可使用XmlTextWriter、XmlDocument ,或者直接读取Xml文件等待
            }
        }

        private void CreateXml()
        {
            XmlDocument doc = new XmlDocument();
            XmlNode root = doc.CreateElement("channel");

            XmlElement titleElm = doc.CreateElement("title");
            titleElm.InnerText = "blogweather";

            //...
       
            root.AppendChild(titleElm);
            doc.AppendChild(root);

            XmlTextWriter xw = new XmlTextWriter(Response.OutputStream,System.Text.Encoding.UTF8);//写到页面返回值中
            xw.Formatting = Formatting.Indented;//将Xml格式化
            doc.Save(xw);
            xw.Flush();
            xw.Close();
        }
    }

    Xml数据如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <channel>
        <title>blogweather</title>
        <link>http://www.blogweather.net</link>
        <description>博客天气预报</description>
    </channel>

    方法一:
    如果所有值均在xml数据中,而且不需要拿这些数据做二次分析,则推荐使用 HTTPService控件

    Flex 端代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" >
     <mx:Script>
      <![CDATA[
       import mx.messaging.AbstractConsumer;
       import flash.events.MouseEvent;
       import mx.controls.Alert;
          
       private function init():void
       {
        getxml.url = "http://www.blogweather.net/getxml.aspx"; //接收Post方法的页面
        var data:Object = new Object();
        data["user_pkid"] = this.parameters.user_pkid;
        getxml.send(data);
       }
                ]]>
     </mx:Script>
     <mx:HTTPService id="getxml" showBusyCursor="true" useProxy="false" method="POST">
     </mx:HTTPService>
     <mx:TextArea  wordWrap="true" editable="false" enabled="true" id="lb_title">
      <mx:text>{getxml.lastResult.channel.title}</mx:text>
     </mx:TextArea>
    </mx:Application>

    方法二:
    如果要将数据进行分析,则要使用URLLoader和URLRequest
    Flex 端代码:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init();">
     <mx:Script>
      <![CDATA[
       import mx.messaging.AbstractConsumer;
       import mx.messaging.channels.StreamingAMFChannel;
       import flash.events.MouseEvent;
       import mx.controls.Alert;
          
                 public var myLoader:URLLoader = new URLLoader();
                 public var myRequest:URLRequest;
                 public var user_pkid:String;

       private function init():void
       {
        var http://www.cnblogs.com/glaivelee/admin/String = "http://www.blogweather.net/getxml.aspx";
        myRequest = new URLRequest(url);
        myRequest.method = URLRequestMethod.POST;
        var data:URLVariables = new URLVariables();
        //接收来自flash的参数调用,比如flash文件为 loadxml.swf,带参数 loadxml.swf?user_pkid=10001
        data.user_pkid = this.parameters.user_pkid; // 获取10001
        myRequest.data = data;
        myLoader.load(myRequest);
        myLoader.addEventListener(Event.COMPLETE,onLoadComplete);
       }
       
       private function onLoadComplete(event:Event):void
       {
        var myxml:XML;
        var loader:URLLoader = URLLoader(event.target);
        myxml = new XML(loader.data);
        
        lb_title.text =myxml.child("channel")[0].child("title");
        if( lb_title.text == "blogweather")
        {
         Alert("页面名称为:博客天气预报");
        }
       }
       
      ]]>
     </mx:Script>
     <mx:TextArea  wordWrap="true" editable="false" enabled="true" id="lb_title">
      <mx:text>lb_title</mx:text>
     </mx:TextArea>
    </mx:Application>


  • 相关阅读:
    「CSP模拟」模拟测试6
    「CSP模拟」模拟测试5
    镇黑板
    求和「Dirichlet 前缀和」
    二叉搜索树「区间DP」
    序列
    [CSP模拟]异或帽子+传话游戏+全球覆盖+幂次序列
    MySQL常用引擎及优缺点
    Django项目远程开发环境搭建
    MySQL8.0安装与配置
  • 原文地址:https://www.cnblogs.com/glaivelee/p/1539856.html
Copyright © 2020-2023  润新知