莫言科技

全过程、自定制,轻松实现跨 旅游集散中心自助游

票务与调度系统(独立版) 整合旅游集散中心资源,提供 自助半自助游自定义套餐

面向有志创业的人士、基于云 计算理念提供的创业产品

敬请期待

查看: 1944|回复: 0

【体验式实践系统】上传文件大小限制、捕获大小限制异常-凯发k8官网下载客户端

[复制链接]
发表于 2010-12-16 18:44:48 | 显示全部楼层 |
本帖最后由 star 于 2010-12-16 19:53 编辑 ! }9 `. o# }% p( f' i0 ?! e- f

0 ^ ]! z% d9 v具体办法是参照的这里:
! f# t# {! k/ w* ]$ r添加了application_beginrequest函数,还记得
  1. <%@ import namespace="system.web.configuration" %>
复制代码
,把web.config的内容import 过来( o( u) y/ g. i- a0 l
! k" s5 k) ^  {3 ]" y n1 ]. z2 r# p
方法是正确的,而且比较好
: b, z3 z' ?0 v/ y# a) a" r$ c只是eb_exp有个问题就是在进入实践页面的时候,pr_id,ex_id,com_id都是从left树里面传递过去的,使用上面的将诶办法,当出现异常的时候会需要从asax重定向到出现异常的页面,如果不加处理就直接定向到异常页面,在页面加载的时候会重新绑定数据,这是需要重新将pr_id,ex_id,com_id这些参数传递过去,asax页面是读不到querystring,应该是request的内容已经修改了,之前的地址参数已经没有了。$ l- v; _" @2 o" ?' y: ?! e
于是在practicepagebase页面在读loadquerystring函数中,在读地址参数的同时将其保存到cookie中,cookie信息是可以在有效时间内保存的;
  1. public virtual void loadquerystring()
    & e3 }7 m; q" i: l
  2.     {
    7 l6 i& b! ^; r( f% p
  3.         /*如果上传的文件超过web.config中限定的最大值,使用asax来进行异常捕获时,会需要重定向请求url,
    6 i! [- y. y( {! c* e3 @8 u
  4.             所以需要将ex_id、cm_id、pr_id信息放到cookie中进行保存,在asax进行页面重定向的时候再将这些值作为地址参数传递过来
    4 n- {# l! t% b! y/ _6 z. t  c, u
  5.             否则页面重定向没有再传入实践id等参数,页面会加载不了数据*/' t* q8 l3 f' q
  6.         if (request.querystring["ex_id"] != null)  n# ]1 l8 j& o" {, v. v1 d$ l2 k
  7.         {
    / z0 r0 x% c# x/ x& |
  8.             int.tryparse(request.querystring["ex_id"], out this.ex_id);7 l6 ^* l' \5 y  x& {
  9.             httpcookie ex_id = new httpcookie("ex_id", request.querystring["ex_id"].tostring());4 o% l7 g7 j' p
  10.             if (!request.browser.cookies)
      g$ z/ x2 u$ n
  11.             {
    * p8 `2 p# s# m$ o
  12.                 javascript.alert("usercookie_unable", "请打开浏览器的cookie功能以保证有足够的操作时间,谢谢!");
    9 e  f1 r) u  u- a9 k
  13.                 return;
    * ^& y$ k) l8 _9 f. ^8 l* e" r8 l
  14.             }
    n# t; u' v7 c' z" ?9 j# y# h
  15.             response.cookies.add(ex_id);; ~- x& f1 w/ s9 ~1 _" [0 ~
  16.         }
    / s7 a- [9 t4 q& \$ d
  17.         if (request.querystring["cm_id"] != null)
    - q* {( x6 u7 ?5 f& z7 n
  18.         {5 n, c. w# b2 h& k
  19.             int.tryparse(request.querystring["cm_id"], out this.cm_id);
    4 q; w/ p2 j( v1 t
  20.             httpcookie cm_id = new httpcookie("cm_id", request.querystring["cm_id"].tostring());
    . c1 f, u& _! w4 {: q4 f
  21.             if (!request.browser.cookies)/ x- d& z8 u5 l% ^; y
  22.             {1 q" m a% i! o. k8 r$ n; }, o
  23.                 javascript.alert("usercookie_unable", "请打开浏览器的cookie功能以保证有足够的操作时间,谢谢!");
    4 n  e2 `9 g! ^! h
  24.                 return;. q! f9 _5 y% }: ?. ~ g# b, r% o
  25.             }0 i* v) | a( p: d/ n u* ?' x3 s1 q
  26.             response.cookies.add(cm_id);
    4 l5 z! a' q; i6 w: p9 d" {
  27.         }
    - f4 c. ?9 b& x7 z& q* `1 q
  28.         if (request.querystring["pr_id"] != null)
    * j4 p# s' a6 a" ?" r& v% i# w
  29.         {8 x, r) a# p( c5 e# q# r0 c4 @$ z
  30.             int.tryparse(request.querystring["pr_id"], out this.pr_id); @! b: c' q- r% d# c9 n7 e
  31.             httpcookie pr_id = new httpcookie("pr_id", request.querystring["pr_id"].tostring());, i- }8 @3 h [! j" m( l
  32.             if (!request.browser.cookies)
    ; b, @0 p4 ~) l5 `& d! g$ m! j
  33.             {8 p% c) `, t. g: p( b0 u
  34.                 javascript.alert("usercookie_unable", "请打开浏览器的cookie功能以保证有足够的操作时间,谢谢!");
    v! ], a5 v0 a. f
  35.                 return;
      n. p. \6 c; e- b% d
  36.             }( n% \  c" \7 e9 e. [0 p9 p
  37.             response.cookies.add(pr_id);' q" z5 {. w7 l0 g2 x
  38.         }( x. {. a/ o" j) s# c9 j
  39.     }
复制代码
再在asax页面读取cookie信息;
  1. //读cookie信息,初始化为"-1",因为practicepagebase是以-1进行判断的# c7 y* u4 n7 f* s) r ~9 v
  2.         string ex_id = "-1";6 `# f" c' q( @* l
  3.         string cm_id = "-1";
    ) g! n6 o, z1 g4 t. z% t2 b
  4.         string pr_id = "-1";
    " l* j$ w. `9 `* ~/ ?' i( m  ?
  5.         if (request.cookies["ex_id"] != null)5 h; r' s7 b: i  g1 k
  6.         {
    7 \6 r/ {) g8 g# b0 i' e7 c
  7.             ex_id = request.cookies["ex_id"].value;( }$ @# f5 a9 g, c
  8.         }3 b' m4 ^5 t' r: v
  9.         if (request.cookies["cm_id"] != null)
    7 w4 g) a1 \& q
  10.         {$ ?: m# d2 r- x# w: p
  11.             cm_id = request.cookies["cm_id"].value;. y$ y" o4 l$ j3 o- u
  12.         }6 m/ y7 _' k: p& i
  13.         if (request.cookies["pr_id"] != null)
    - ~7 q2 `7 @. y, j
  14.         { q" [- q- |( @# k3 g) d/ e6 k6 t
  15.             pr_id = request.cookies["pr_id"].value;
    ) [/ ?* o0 b/ @ i( j" y6 r
  16.         }
复制代码
最后在重定向的时候将pr_id,ex_id,com_id再作为地址参数传递过去,在页面加载的时候就能加载到实践数据了
  1. //请求重定向到上载页面,并给用户提示信息,同时将实践id等参数继续作为地址参数传递到页面上,这样页面才能够加载到实践数据。
    - r: k- t. q4 a; n
  2.             context.response.redirect(this.request.url.localpath "?error=" server.urlencode("请上传小于4m的文件!") "&ex_id=" ex_id "&cm_id=" cm_id "&pr_id=" pr_id);
复制代码
还有一点需要注意的就是:
  1. /*注意顺序以及ispostback*/        
    1 _  z* y* a9 q& ~; u6 z3 c
  2.         this.loadquerystring();1 o w  g- u- u* l" r$ a8 k
  3.         this.loadusercookie();
    9 m! y% q% a' n7 n
  4.         if (!this.ispostback)//回传的话就不执行了,以防每次刷新页面都会进行提醒,因为request.querystring["error"]的内容没有改变
    $ {& ]( x. i9 j: c
  5.         {  l0 s2 g1 n6 ]: {
  6.             if (!string.isnullorempty(request.querystring["error"]))) [: o: j5 e8 o
  7.             {
    8 ^: e5 j) z6 o. m6 `
  8.                 string errmsg = server.htmlencode(request.querystring["error"]);
    $ a4 u3 c& p! o8 c
  9.                 javascript.alert(errmsg);
    * v! q. k* l% o% z: e
  10.                 this.loadquerystring();
    8 l8 d4 z5 b) p u
  11.             }
    : r& l6 _( { x
  12.         }
复制代码
错误提示,并且能正常重定向页面8 b" i) c& z$ z' t

本帖子中包含更多资源

您需要 才可以下载或查看,没有帐号?

x

||archiver|莫言科技 ( )    

gmt 8, 2021-3-17 07:32 , processed in 0.065432 second(s), 11 queries , wincache on.

powered by x3.2

© 2001-2013

返回列表