zoukankan      html  css  js  c++  java
  • 使用ASP.NET 2.0提供的WebResource管理内嵌资源(c#)

    ASP.NET(1.0/1.1)给我们提供了一个开发WebControl的编程模型,于是我们摆脱了asp里面的include模式的复用方式。不过1.0/1.1提供的Web控件开发模型对于处理没有image、css等外部资源的组件还算比较得心应手,script虽然很多时候也是外部资源,但在开发控件的时候我们习惯把script使用Page.Register...Script()来嵌入模块,因为紧凑的东西更便于我们复用,用一个dll就可以解决问题又何必要节外生枝呢。

             ASP.NET 2.0提供的Web Resources管理模型,很好的解决了image、css、script等外部资源的管理问题。现在只需要在solution explorer把资源文件的build action属性设为Embedded Resource。然后在assemblyinfo.cs里添加一句:
    [assembly: WebResource("WebCtrl.cutecat.jpg", "image/jpg")]
            我们可以看msdn里有WebResource的参数说明:第一个是资源的名字,第二个是资源的mime-type名。
        其实这个语句放任何cs文件里,保证放在最高级namespace外就行。

            然后在程序中调用如下:
    m_Image.ImageUrl = this.Page.GetWebResourceUrl(typeof(WebCustom), "WebCtrl.cutecat.jpg");
            GetWebResourceUrl的第一个参数是用户定义的类型(这个是用来确定assembly用的),第二个参数是资源名。

            上面的语句返回给browser的代码是:
    <img src="WebResource.axd?a=pWebCtrl&amp;r=WebCtrl.cutecat.jpg&amp;t=632390947985312500" style="border-0px;" />
            其中的src就是GetWebesourceUrl执行后返回的,它有3个参数(这里的&被解析成了&amp;,不过IIS也认的),第一个参数a是就是通过typeof(WebCustom)来确定的assembly的名字,第二个参数r很明显就是资源的名字了,第三个参数t是一个a所指的assembly的timestamp。这个t是为了让资源的引用能享用browser缓存的优化,因为IE对相同的url有自己的cache机制。又因为这个r同时又是用户assembly文件的timestamp,如果用户更新了代码,重新编译后t也会变化,这样也就保证了browser能获得最新的资源更新。如果我们能确定嵌入资源是确实不用再更新的,我们可以在typeof()里写一个bcl里的类型,比如typeof(string),那么他将只在freamwork升级后才会变动这个t。

            当然这个WebResource.axd是不存在的,它只是IIS中的一个ISAPI影射。

            使用示例代码如下:
    #region WebResource Demo

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.Web.UI;
    using System.Web.UI.WebControls;

    [assembly: WebResource(
    "WebCtrl.cutecat.jpg", "image/jpg")]

    namespace WebCtrl
    {
            [DefaultProperty(
    "Text")]
            [ToolboxData(
    "<{0}:WebCustom runat=server></{0}:WebCustom>")]
        
    public class WebCustom : WebControl
            {
            
    private string text;
            
    private Image m_Image;

                [Bindable(
    true)]
                [Category(
    "Appearance")]
                [DefaultValue(
    "")]
            
    public string Text
                {
                
    get { return text; }
                
    set { text = value; }
                }

            
    protected override void CreateChildControls()
                {
                    m_Image
    = new Image();
                
    this.Controls.Add(m_Image);
                }

            
    protected override void Render(HtmlTextWriter output)
                {
                    m_Image.ImageUrl
    = this.Page.ClientScript.GetWebResourceUrl(typeof(WebCustom), "WebCtrl.cutecat.jpg");
                
    this.RenderChildren(output);
                }
            }
    }
    #endregion

    JS

    1.向项目中添加Jscript文件
    //script_1.js-----
    function doClick1()
    {
           alert("OK1_wufeng");
    }
    //script_2.js-----
    function doClick2()
    {
           alert("OK2");
    }

    2.解决方案资源管理器中,右键查看script_1.js和script_2.js的属性,把高级中的“生成操作”属性设置成“嵌入的资源”。

    3.向AssemblyInfo.cs文件中添加如下行:(注意域名wf.ClientScriptResourceLabel)
    [assembly: System.Web.UI.WebResource("wf.ClientScriptResourceLabel.script_1.js", "application/x-javascript")]
    [assembly: System.Web.UI.WebResource("wf.ClientScriptResourceLabel.script_2.js", "application/x-javascript")]

    4.向项目中添加一个类, 实例:
    using System;
    using System.Drawing;
    using System.Web.UI;
    using System.Web;
    using System.Globalization;

    namespace wf.ClientScriptResourceLabel
    {
           public class ClientScriptResourceLabel : System.Web.UI.WebControls.WebControl
           {
               //调用脚本资源
               protected override void OnPreRender(EventArgs e)
               {
                   if (this.Page != null)
                   {
                       this.Page.ClientScript.RegisterClientScriptResource(typeof(ClientScriptResourceLabel), "wf.ClientScriptResourceLabel.script_1.js");
                       this.Page.ClientScript.RegisterClientScriptResource(typeof(ClientScriptResourceLabel), "wf.ClientScriptResourceLabel.script_2.js");
                   }
                   base.OnPreRender(e);
               }


               /// <summary>
               /// 呈现控件的方法RenderContents
               /// </summary>
               protected override void RenderContents(HtmlTextWriter output)
               {
                   output.AddAttribute("id", "1");
                   output.AddAttribute("type", "checkbox");
                   output.AddAttribute("value", "测试1");
                   output.AddAttribute("onclick", "javascript:doClick1();");
                   output.RenderBeginTag(HtmlTextWriterTag.Input);
                   output.RenderEndTag();

                   output.AddAttribute("id", "2");
                   output.AddAttribute("type", "checkbox");
                   output.AddAttribute("value", "测试2");
                   output.AddAttribute("onclick", "javascript:doClick2();");
                   output.RenderBeginTag(HtmlTextWriterTag.Input);
                   output.RenderEndTag();

                   base.RenderContents(output);
               }
           }
    }

    MIME类型大全

    application/vnd.lotus-1-2-3
    3gp video/3gpp
    aab application/x-authoware-bin
    aam application/x-authoware-map
    aas application/x-authoware-seg
    ai application/postscript
    aif audio/x-aiff
    aifc audio/x-aiff
    aiff audio/x-aiff
    als audio/X-Alpha5
    amc application/x-mpeg
    ani application/octet-stream
    asc text/plain
    asd application/astound
    asf video/x-ms-asf
    asn application/astound
    asp application/x-asap
    asx video/x-ms-asf
    au audio/basic
    avb application/octet-stream
    avi video/x-msvideo
    awb audio/amr-wb
    bcpio application/x-bcpio
    bin application/octet-stream
    bld application/bld
    bld2 application/bld2
    bmp application/x-MS-bmp
    bpk application/octet-stream
    bz2 application/x-bzip2
    cal image/x-cals
    ccn application/x-cnc
    cco application/x-cocoa
    cdf application/x-netcdf
    cgi magnus-internal/cgi
    chat application/x-chat
    class application/octet-stream
    clp application/x-msclip
    cmx application/x-cmx
    co application/x-cult3d-object
    cod image/cis-cod
    cpio application/x-cpio
    cpt application/mac-compactpro
    crd application/x-mscardfile
    csh application/x-csh
    csm chemical/x-csml
    csml chemical/x-csml
    css text/css
    cur application/octet-stream
    dcm x-lml/x-evm
    dcr application/x-director
    dcx image/x-dcx
    dhtml text/html
    dir application/x-director
    dll application/octet-stream
    dmg application/octet-stream
    dms application/octet-stream
    doc application/msword
    dot application/x-dot
    dvi application/x-dvi
    dwf drawing/x-dwf
    dwg application/x-autocad
    dxf application/x-autocad
    dxr application/x-director
    ebk application/x-expandedbook
    emb chemical/x-embl-dl-nucleotide
    embl chemical/x-embl-dl-nucleotide
    eps application/postscript
    eri image/x-eri
    es audio/echospeech
    esl audio/echospeech
    etc application/x-earthtime
    etx text/x-setext
    evm x-lml/x-evm
    evy application/x-envoy
    exe application/octet-stream
    fh4 image/x-freehand
    fh5 image/x-freehand
    fhc image/x-freehand
    fif image/fif
    fm application/x-maker
    fpx image/x-fpx
    fvi video/isivideo
    gau chemical/x-gaussian-input
    gca application/x-gca-compressed
    gdb x-lml/x-gdb
    gif image/gif
    gps application/x-gps
    gtar application/x-gtar
    gz application/x-gzip
    hdf application/x-hdf
    hdm text/x-hdml
    hdml text/x-hdml
    hlp application/winhlp
    hqx application/mac-binhex40
    htm text/html
    html text/html
    hts text/html
    ice x-conference/x-cooltalk
    ico application/octet-stream
    ief image/ief
    ifm image/gif
    ifs image/ifs
    imy audio/melody
    ins application/x-NET-Install
    ips application/x-ipscript
    ipx application/x-ipix
    it audio/x-mod
    itz audio/x-mod
    ivr i-world/i-vrml
    j2k image/j2k
    jad text/vnd.sun.j2me.app-descriptor
    jam application/x-jam
    jar application/java-archive
    jnlp application/x-java-jnlp-file
    jpe image/jpeg
    jpeg image/jpeg
    jpg image/jpeg
    jpz image/jpeg
    js application/x-javascript
    jwc application/jwc
    kjx application/x-kjx
    lak x-lml/x-lak
    latex application/x-latex
    lcc application/fastman
    lcl application/x-digitalloca
    lcr application/x-digitalloca
    lgh application/lgh
    lha application/octet-stream
    lml x-lml/x-lml
    lmlpack x-lml/x-lmlpack
    lsf video/x-ms-asf
    lsx video/x-ms-asf
    lzh application/x-lzh
    m13 application/x-msmediaview
    m14 application/x-msmediaview
    m15 audio/x-mod
    m3u audio/x-mpegurl
    m3url audio/x-mpegurl
    ma1 audio/ma1
    ma2 audio/ma2
    ma3 audio/ma3
    ma5 audio/ma5
    man application/x-troff-man
    map magnus-internal/imagemap
    mbd application/mbedlet
    mct application/x-mascot
    mdb application/x-msaccess
    mdz audio/x-mod
    me application/x-troff-me
    mel text/x-vmel
    mi application/x-mif
    mid audio/midi
    midi audio/midi
    mif application/x-mif
    mil image/x-cals
    mio audio/x-mio
    mmf application/x-skt-lbs
    mng video/x-mng
    mny application/x-msmoney
    moc application/x-mocha
    mocha application/x-mocha
    mod audio/x-mod
    mof application/x-yumekara
    mol chemical/x-mdl-molfile
    mop chemical/x-mopac-input
    mov video/quicktime
    movie video/x-sgi-movie
    mp2 audio/x-mpeg
    mp3 audio/x-mpeg
    mp4 video/mp4
    mpc application/vnd.mpohun.certificate
    mpe video/mpeg
    mpeg video/mpeg
    mpg video/mpeg
    mpg4 video/mp4
    mpga audio/mpeg
    mpn application/vnd.mophun.application
    mpp application/vnd.ms-project
    mps application/x-mapserver
    mrl text/x-mrml
    mrm application/x-mrm
    ms application/x-troff-ms
    mts application/metastream
    mtx application/metastream
    mtz application/metastream
    mzv application/metastream
    nar application/zip
    nbmp image/nbmp
    nc application/x-netcdf
    ndb x-lml/x-ndb
    ndwn application/ndwn
    nif application/x-nif
    nmz application/x-scream
    nokia-op-logo image/vnd.nok-oplogo-color
    npx application/x-netfpx
    nsnd audio/nsnd
    nva application/x-neva1
    oda application/oda
    oom application/x-AtlasMate-Plugin
    pac audio/x-pac
    pae audio/x-epac
    pan application/x-pan
    pbm image/x-portable-bitmap
    pcx image/x-pcx
    pda image/x-pda
    pdb chemical/x-pdb
    pdf application/pdf
    pfr application/font-tdpfr
    pgm image/x-portable-graymap
    pict image/x-pict
    pm application/x-perl
    pmd application/x-pmd
    png image/png
    pnm image/x-portable-anymap
    pnz image/png
    pot application/vnd.ms-powerpoint
    ppm image/x-portable-pixmap
    pps application/vnd.ms-powerpoint
    ppt application/vnd.ms-powerpoint
    pqf application/x-cprplayer
    pqi application/cprplayer
    prc application/x-prc
    proxy application/x-ns-proxy-autoconfig
    ps application/postscript
    ptlk application/listenup
    pub application/x-mspublisher
    pvx video/x-pv-pvx
    qcp audio/vnd.qcelp
    qt video/quicktime
    qti image/x-quicktime
    qtif image/x-quicktime
    r3t text/vnd.rn-realtext3d
    ra audio/x-pn-realaudio
    ram audio/x-pn-realaudio
    rar application/x-rar-compressed
    ras image/x-cmu-raster
    rdf application/rdf+xml
    rf image/vnd.rn-realflash
    rgb image/x-rgb
    rlf application/x-richlink
    rm audio/x-pn-realaudio
    rmf audio/x-rmf
    rmm audio/x-pn-realaudio
    rmvb audio/x-pn-realaudio
    rnx application/vnd.rn-realplayer
    roff application/x-troff
    rp image/vnd.rn-realpix
    rpm audio/x-pn-realaudio-plugin
    rt text/vnd.rn-realtext
    rte x-lml/x-gps
    rtf application/rtf
    rtg application/metastream
    rtx text/richtext
    rv video/vnd.rn-realvideo
    rwc application/x-rogerwilco
    s3m audio/x-mod
    s3z audio/x-mod
    sca application/x-supercard
    scd application/x-msschedule
    sdf application/e-score
    sea application/x-stuffit
    sgm text/x-sgml
    sgml text/x-sgml
    sh application/x-sh
    shar application/x-shar
    shtml magnus-internal/parsed-html
    shw application/presentations
    si6 image/si6
    si7 image/vnd.stiwap.sis
    si9 image/vnd.lgtwap.sis
    sis application/vnd.symbian.install
    sit application/x-stuffit
    skd application/x-Koan
    skm application/x-Koan
    skp application/x-Koan
    skt application/x-Koan
    slc application/x-salsa
    smd audio/x-smd
    smi application/smil
    smil application/smil
    smp application/studiom
    smz audio/x-smd
    snd audio/basic
    spc text/x-speech
    spl application/futuresplash
    spr application/x-sprite
    sprite application/x-sprite
    spt application/x-spt
    src application/x-wais-source
    stk application/hyperstudio
    stm audio/x-mod
    sv4cpio application/x-sv4cpio
    sv4crc application/x-sv4crc
    svf image/vnd
    svg image/svg-xml
    svh image/svh
    svr x-world/x-svr
    swf application/x-shockwave-flash
    swfl application/x-shockwave-flash
    t application/x-troff
    tad application/octet-stream
    talk text/x-speech
    tar application/x-tar
    taz application/x-tar
    tbp application/x-timbuktu
    tbt application/x-timbuktu
    tcl application/x-tcl
    tex application/x-tex
    texi application/x-texinfo
    texinfo application/x-texinfo
    tgz application/x-tar
    thm application/vnd.eri.thm
    tif image/tiff
    tiff image/tiff
    tki application/x-tkined
    tkined application/x-tkined
    toc application/toc
    toy image/toy
    tr application/x-troff
    trk x-lml/x-gps
    trm application/x-msterminal
    tsi audio/tsplayer
    tsp application/dsptype
    tsv text/tab-separated-values
    tsv text/tab-separated-values
    ttf application/octet-stream
    ttz application/t-time
    txt text/plain
    ult audio/x-mod
    ustar application/x-ustar
    uu application/x-uuencode
    uue application/x-uuencode
    vcd application/x-cdlink
    vcf text/x-vcard
    vdo video/vdo
    vib audio/vib
    viv video/vivo
    vivo video/vivo
    vmd application/vocaltec-media-desc
    vmf application/vocaltec-media-file
    vmi application/x-dreamcast-vms-info
    vms application/x-dreamcast-vms
    vox audio/voxware
    vqe audio/x-twinvq-plugin
    vqf audio/x-twinvq
    vql audio/x-twinvq
    vre x-world/x-vream
    vrml x-world/x-vrml
    vrt x-world/x-vrt
    vrw x-world/x-vream
    vts workbook/formulaone
    wav audio/x-wav
    wax audio/x-ms-wax
    wbmp image/vnd.wap.wbmp
    web application/vnd.xara
    wi image/wavelet
    wis application/x-InstallShield
    wm video/x-ms-wm
    wma audio/x-ms-wma
    wmd application/x-ms-wmd
    wmf application/x-msmetafile
    wml text/vnd.wap.wml
    wmlc application/vnd.wap.wmlc
    wmls text/vnd.wap.wmlscript
    wmlsc application/vnd.wap.wmlscriptc
    wmlscript text/vnd.wap.wmlscript
    wmv audio/x-ms-wmv
    wmx video/x-ms-wmx
    wmz application/x-ms-wmz
    wpng image/x-up-wpng
    wpt x-lml/x-gps
    wri application/x-mswrite
    wrl x-world/x-vrml
    wrz x-world/x-vrml
    ws text/vnd.wap.wmlscript
    wsc application/vnd.wap.wmlscriptc
    wv video/wavelet
    wvx video/x-ms-wvx
    wxl application/x-wxl
    x-gzip application/x-gzip
    xar application/vnd.xara
    xbm image/x-xbitmap
    xdm application/x-xdma
    xdma application/x-xdma
    xdw application/vnd.fujixerox.docuworks
    xht application/xhtml+xml
    xhtm application/xhtml+xml
    xhtml application/xhtml+xml
    xla application/vnd.ms-excel
    xlc application/vnd.ms-excel
    xll application/x-excel
    xlm application/vnd.ms-excel
    xls application/vnd.ms-excel
    xlt application/vnd.ms-excel
    xlw application/vnd.ms-excel
    xm audio/x-mod
    xml text/xml
    xmz audio/x-mod
    xpi application/x-xpinstall
    xpm image/x-xpixmap
    xsit text/xml
    xsl text/xml
    xul text/xul
    xwd image/x-xwindowdump
    xyz chemical/x-pdb
    yz1 application/x-yz1
    z application/x-compress
    zac application/x-zaurus-zac
    zip application/zip

     

  • 相关阅读:
    小程序 页面跳转
    mybatis 字段类型Data相
    数据库的重命名
    validator js验证器
    git命令
    常用正则表达式
    Vuejs+elementUI项目,在进行打包时,要注意的问题
    多线程的sleep、yield、join用法及sleep与wait的区别
    跨域请求问题:CORS
    spring框架中用到了哪些设计模式
  • 原文地址:https://www.cnblogs.com/sig556/p/1224349.html
Copyright © 2011-2022 走看看