Spiga

Q & A专用文章(已过期)

2006-10-29 05:32 by Jeffrey Zhao, 65140 visits, 收藏, 编辑

按照原来的打算,这篇文章是专用于AJAX培训Q & A的。但是我想,我们也不需要将其限制于培训本身,因此在培训开始之前就发出了这篇文章。大家在学习和应用ASP.NET AJAX中所遇到的任何问题都能够直接回复在这片文章下,我们会尽力帮助大家解决的。这种Q & A的方式也能够让我们选择空余的时间集中为大家服务,同时也不会影响我们本身的工作。

不过为了更好的了解大家的问题,请大家在提问时能尽可能地将问题描述清楚,如果可以的话也可以附上程序代码,这样可以减少我们之间交流的“往返”次数。如果在三天内还没有看到我们的回复,或者您真的有比较紧急的问题,您可以留言给我,这样我就能够收到Email,希望能够尽快地帮您解决问题。

另外,请各位浏览本贴的朋友,如果发现您知道答案的问题,也请回复一下,可能您的举手之劳能够给别人带来莫大的帮助。:)

谢谢大家。

Updated:已过期,您可以去我的博客首页顶部查看最新的Q & A专用贴。

Add your comment

3241 条回复

    评论共33页: 首页 上一页 25 26 27 28 29 30 31 32 33 
  1. #3141楼[楼主] Jeffrey Zhao      2009-11-25 13:27
    @junechen
    在哪里点右键?所有数据变成HTML了才能在网页上显示出来,总归可以的。
     回复 引用 查看   
  2. #3142楼 junechen      2009-11-25 14:23
    老赵可能是我没说清楚
    如果gridview里有五条数据 在网页上点右键查看源代码
    在源代码里是看不到这五条数据的 整个gridview都没有显示出来
    我就是想问题你 怎么做可以让gridview在网页上显示出来
     回复 引用 查看   
  3. #3143楼 刑ˇ天      2009-11-25 14:53
    您好,最近我在做gridview导出excel的时候,出现了这样的错误,不知道是什么原因?
    代码:
                Response.Clear();
                Response.AddHeader("content-disposition", "attachment;filename=StoresList.xls");
                Response.Charset = "gb2312";
                Response.ContentType = "application/vnd.xls";
                System.IO.StringWriter stringWrite = new System.IO.StringWriter();
                System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    
                gvStores.AllowPaging = false;
                Bind();
                gvStores.RenderControl(htmlWrite);
    
                Response.Write(stringWrite.ToString());
                Response.End();
                gvStores.AllowPaging = true;
                Bind();
    

    错误:
    [OutOfMemoryException: 引发类型为“System.OutOfMemoryException”的异常。]
    System.String.GetStringForStringBuilder(String value, Int32 startIndex, Int32 length, Int32 capacity) +29
    System.Text.StringBuilder.GetNewString(String currentString, Int32 requiredLength) +69
    System.Text.StringBuilder.Append(String value) +97
    System.IO.StringWriter.Write(String value) +34
    System.Web.UI.HtmlTextWriter.Write(String s) +27
    System.Web.UI.WebControls.TableCell.RenderContents(HtmlTextWriter writer) +41
    System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
    System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +10
    System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    System.Web.UI.WebControls.Table.RenderContents(HtmlTextWriter writer) +206
    System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +134
    System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +19
    System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +10
    System.Web.UI.WebControls.GridView.Render(HtmlTextWriter writer, Boolean renderPanel) +224
    System.Web.UI.WebControls.GridView.Render(HtmlTextWriter writer) +33
    System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +99
    System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
    NPetshop.WebApp.admin.OrderManage.StoresList.btnToExcel_Click(Object sender, EventArgs e) in E:\CRM\HHEC\NPetshop.WebApp\admin\OrderManage\StoresList.aspx.cs:135
    System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
    System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
    System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
    System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
    System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
     回复 引用 查看   
  4. #3144楼 ruson      2009-11-26 22:06
    最近有个想法实现起来有些困难,想请教下您。

    我想获取asp.net页面向用户输出内容的string字串,将字串的HashCode值向客户端设置一个ETag,用户下次请求时检查这个ETag,如果和输出内容的的HashCode一样的话就返回304,直接Response.End,这样可以节省不少流量。

    很直接我想到了用HttpModule的方式去截获,这样可以截获所有请求且对程序侵入小,但是在用HttpModule实现的时候确发现字符串的获取方式及执行检查及Response.End的时机有困难。
    获取字串我想到可以用Response.Filter的方式去截获内容,但需要包装一个Stream对象且要记录(copy一份)所有的向输出流Write的内容。但感觉那样对性能有一定影响。如果影响性能的话那不是得不偿失么。
     回复 引用 查看   
  5. #3145楼[楼主] Jeffrey Zhao      2009-11-26 23:19
    @ruson
    如果真要这么做,那么生成静态页吧。
     回复 引用 查看   
  6. #3146楼[楼主] Jeffrey Zhao      2009-11-26 23:20
    @刑ˇ天
    看不懂啊,代码有些奇怪,你Response.End()之后还执行的代码是做什么的呢?
     回复 引用 查看   
  7. #3147楼[楼主] Jeffrey Zhao      2009-11-26 23:20
    @junechen
    这原因太多了,我不可能知道的……
     回复 引用 查看   
  8. #3148楼 寒剑      2009-11-27 09:13
    你好:
    最近单位想用sliverlight做点东西,但是没有人熟悉,上网看了一下微软的例子,发现用鼠标滑轮不能滑动滚动条?请问是sliverlight的控件不支持滑轮?还是这些例子没有处理?问题问的很幼稚,请见谅!
    这是我看例子的网址:
    http://samples.msdn.microsoft.com/Silverlight/SampleBrowser/index.htm#/?sref=System.Windows.Controls.ButtonClickModeSL

    谢谢了先!
     回复 引用 查看   
  9. #3149楼 ruson      2009-11-27 11:11
    引用Jeffrey Zhao:
    @ruson
    如果真要这么做,那么生成静态页吧。

    生成静态页要有个合理的生成机制,生成静态页用户刷新的时候还是会重新向客户端输出占用流量。 而且动态静很强的页面不适合生成静态页。也不是一定要这么做,只是觉得有可行性
     回复 引用 查看   
  10. #3150楼[楼主] Jeffrey Zhao      2009-11-27 11:36
    @ruson
    用静态页,就可以让Web Server或程序自己做ETag啊,缓存之类的处理。
    动态性很强的页面不适合做静态页,也不适合做ETag,因为Cache基本上都不会Hit。
    所以其实你的需求就是静态页,两者是一样的呃……
     回复 引用 查看   
  11. #3151楼 @小梵[未注册用户]2009-11-27 17:01
    老赵,我是学习。net 时间不长的学生。现在想准备学习mvc ,请问有这个必要吗,需要注意什么呢?
     回复 引用   
  12. #3152楼 LifeLight      2009-11-30 11:37
    你好,老赵,我想咨询一下关于DataList数据绑定的问题,问题是这样的,DataList中SelectedItemStyle这个是用来设置当选中某一行时的样式,可是我在做的过程始终无法看到效果。你那里有没有小例子,给发一个邮箱xyj.china.cn@gmail.com,十分感谢
     回复 引用 查看   
  13. #3153楼 _龙猫      2009-11-30 17:05
    老赵,问你个关于“动态条件查询”的类设计问题。
    表Book中包含ID、Title、Price、PublicDate、CategoryID等属性;
    表Author包含ID、Name、Genel、Age等属性;
    表AutherOfBook中仅包含ID、BookID、AuthorID三个属性;
    现在需要设计一个BookRepository类,要求实现动态条件查询方法FindBook,查询条件为TitleKey||Price||AuthorID||CategoryID等的组合,不知道您会怎样设计BookRepository类及这个方法.

    以上说得太具体了,变得像是跟您要代码似的。其实我主要是想知道面对这种动态搜索条件的时候,需要用什么样的模式才好(写一大堆重载方法实在是太不优雅了),以您的经验,不知道有没有较合适的解决方案.
     回复 引用 查看   
  14. #3154楼 品茗人生[未注册用户]2009-11-30 22:23
    赵老师:
    您好!
    我很想了解vs中的一般处理程序的详细讲解(以ashx为后缀)
     回复 引用   
  15. #3155楼[楼主] Jeffrey Zhao      2009-11-30 22:31
    @品茗人生
    这东西一点特别之处都没,需要怎么解释啊……
     回复 引用 查看   
  16. #3156楼[楼主] Jeffrey Zhao      2009-11-30 22:34
    @_龙猫
    Query Object模式,可以了解一下。
     回复 引用 查看   
  17. #3157楼[楼主] Jeffrey Zhao      2009-11-30 22:35
    @LifeLight
    真不懂DataList……
     回复 引用 查看   
  18. #3158楼[楼主] Jeffrey Zhao      2009-11-30 22:35
    @@小梵
    学好web基础和.net,学mvc简直玩儿似的。
     回复 引用 查看   
  19. #3159楼 小城故事      2009-11-30 22:37
    引用@小梵:老赵,我是学习。net 时间不长的学生。现在想准备学习mvc ,请问有这个必要吗,需要注意什么呢?

    很有必要,不过还是先学好asp.net webform模式吧。要注意代码结构,看看面向对象设计的原则,其实开始就是shy、dry等原则。
     回复 引用 查看   
  20. #3160楼 小城故事      2009-11-30 22:39
    @_龙猫
    看看这个http://www.cnblogs.com/coolcode/archive/2009/09/28/IQueryBuilder.html

     回复 引用 查看   
  21. #3161楼[楼主] Jeffrey Zhao      2009-11-30 23:33
    @小城故事
    嗯嗯,LINQ其实就是Query Object的一个限制很少的实现,因为可以写成任何逻辑形式,呵呵。
     回复 引用 查看   
  22. #3162楼 velun[未注册用户]2009-12-02 09:58
    你好,听闻您是个高手呵呵,我刚学.net不久,以前在学校做C++较多,现在在公司边做项目边学,但是感觉这样学习很不系统,能不能介绍一些比较好的书籍或者什么方法来系统地学习和深入C#和SQL相关的知识,盼解答,谢谢。
     回复 引用   
  23. #3163楼 juncent      2009-12-02 10:21
    有什么好的学习C#和SQL的书籍介绍吗,谢谢
     回复 引用 查看   
  24. #3164楼[楼主] Jeffrey Zhao      2009-12-02 10:32
    @juncent
    我学C#和SQL都没看什么书……
     回复 引用 查看   
  25. #3165楼 juncent      2009-12-02 11:37
    那能不能说一下您是怎么学习的呢,谢谢!
     回复 引用 查看   
  26. #3166楼 Atpking      2009-12-02 17:18
    @lorgine

    貌似用了摇匀器之后就这样了。。。
     回复 引用 查看   
  27. #3167楼 johnchenbj[未注册用户]2009-12-02 19:49
    Dear Jeffery Zhao,

    我用ASP.NET做了一个试题库系统,是通过Ajax 来调用sqlserver 数据的。但碰到一个很困惑的问题,想麻烦赵老师解答:

    如何在网页之间通过session 传递 dataTable?

    将web.config中的sessionstate的mode设定为"InProc", 保存学生答题信息是没有问题的,但极不稳定,session信息常常不明不白就丢失了;

    将web.config中的sessionstate的mode设定为"StateServer"或“SQLServer”, 虽然很稳定,但保存不了学生答题信息,也就是说,session datatable 信息不能在ajax 类文件取到。这是为什么?

    敬请赵老师帮忙分析一下原因并赐教解决方法。我在听您的视频课件,想学习用webservice 传递 dataSet或dataTable数据,不知能否解决这个问题?

    先谢谢了!

    能否将回复发到我的信箱里?

    John Chen (An English teacher in UIBE, Beijing)



     回复 引用   
  28. #3168楼[楼主] Jeffrey Zhao      2009-12-02 19:56
    @johnchenbj
    什么叫做用AJAX调用?ASP.NET AJAX吗?
    其实,能不用Session就不用Session吧。
    取不到的原因是没有存进去,还是AJAX的关系?
    不用AJAX能存进去取出来吗?
     回复 引用 查看   
  29. #3169楼[楼主] Jeffrey Zhao      2009-12-02 19:57
    @juncent
    看书,看资料,练习……
     回复 引用 查看   
  30. #3170楼 小梵[未注册用户]2009-12-03 17:28
    感谢楼主解答。一般 替换模版中的标签对性能影响大吗?动易应该就是在访问页面的时候解析页面中的标签的,这样做有什么坏处呢,有什么比较好的标签解析方式吗?
     回复 引用   
  31. #3171楼 JiaruiStone      2009-12-03 21:33
    今天碰到一个比较古怪的问题,百思不得其解,忘老赵不吝赐教。。
    问题是这样滴:

    一个class中只有一个Private成员,用什么方法能访问这个成员?
     回复 引用 查看   
  32. #3172楼 JasonShen[未注册用户]2009-12-03 23:10
    老赵你好!
    我是你的一位读者,昨天我到书店去购了一本你写的《道不远人》,很早就想拜读一下,但一直没时间,呵呵!
    现在有时间了,我晚上看了一下,第一章就把我难住了,我对.net编程模型还不是很了解,请问能指点我一下不?
    谢谢!
    你忠实的读者:Jason
     回复 引用   
  33. #3173楼 RednaxelaFX      2009-12-03 23:34
    引用JasonShen:
    老赵你好!
    我是你的一位读者,昨天我到书店去购了一本你写的《道不远人》,很早就想拜读一下,但一直没时间,呵呵!
    现在有时间了,我晚上看了一下,第一章就把我难住了,我对.net编程模型还不是很了解,请问能指点我一下不?
    谢谢!
    你忠实的读者:Jason

    原来老赵出过书么……? =_=||||
     回复 引用 查看   
  34. #3174楼 未登录的老赵[未注册用户]2009-12-03 23:47
    @JasonShen
    难道您真认为一个姓谭的作者,会给自己取名叫老赵吗?
     回复 引用   
  35. #3175楼[楼主] Jeffrey Zhao      2009-12-03 23:50
    @JiaruiStone
    这个是最基本的,一点不古怪也不用百思不得其解,基本说明你没看书……
     回复 引用 查看   
  36. #3176楼 ceiltop[未注册用户]2009-12-04 11:34
    你好 老赵,很久就看你的ajax方面的视频了,现在碰到一些问题想请教一下:
    1.在使用beginInvoke的方法里面有个异步回调的委托 new AsyncCallback(UdpSendEventHandlerCallBack) 是不是每次调用一次beginInvoke 都会创建一个新的线程去处理呢.
    2. 现在做一个项目,其中有一些问题很困扰,能否把msn给我,让我请教一下您呢??
     回复 引用   
  37. #3177楼 小梵[未注册用户]2009-12-04 20:49
    赵老师

    一般 替换模版中的标签对性能影响大吗?动易应该就是在访问页面的时候解析页面中的标签的,这样做有什么坏处呢,有什么比较好的标签解析方式吗?
     回复 引用   
  38. #3178楼 JiaruiStone      2009-12-04 23:01
    @Jeffrey Zhao
    引用Jeffrey Zhao:
    @JiaruiStone
    这个是最基本的,一点不古怪也不用百思不得其解,基本说明你没看书……



    还是没明白,从类外面如何能访问它的private成员呢,忘赐教,谢谢!
     回复 引用 查看   
  39. #3179楼[楼主] Jeffrey Zhao      2009-12-04 23:11
    @JiaruiStone
    1、仔细看书
    2、先搜再问
     回复 引用 查看   
  40. #3180楼[楼主] Jeffrey Zhao      2009-12-05 14:00
    @小梵
    看你怎么实现了,一般使用模板性能最好的方式是“编译执行”不是“解释/解析执行”。
     回复 引用 查看   
  41. #3181楼 小梵[未注册用户]2009-12-06 18:13
    楼主真是一针见血啊。。够清楚。。谢谢了、、那现在的dz就是编译执行的。但是他的ASPX.CS文件需要我自己写吗?
     回复 引用   
  42. #3182楼[楼主] Jeffrey Zhao      2009-12-06 18:36
    @小梵
    听不懂了,我不明白DZ是怎么做的。
     回复 引用 查看   
  43. #3183楼 Freewind      2009-12-07 09:07
    你好!有个问题请教一下。

    有关Url Rewrite 的.(http://www.cnblogs.com/JeffreyZhao/archive/2008/01/13/Url-Rewrite-3.html)

    普通Urlrewrite是可以了, 输入register.html 转到 register.aspx了
    规则如下:
    RewriteRule ^/nmn/member/(.*?)\.html /nmn/member/$1.aspx [I, L, U]

    就是点提交后就转成.aspx页面的,我想让它还是.html的, 得不到Request.ServerVariables["HTTP_X_REWRITE_URL"]的值 ,是空的, 不知道错在哪了?



    http://topic.csdn.net/u/20091204/11/1a5c4197-b9ec-4d55-a76b-b29e168c3e4d.html?25607
    这是在CSDN上的提问,要详细点.

    期待你的回复.谢谢!
     回复 引用 查看   
  44. #3184楼 enily[未注册用户]2009-12-07 09:42
    请教下 AutoCompleteExtender的MinimumPrefixLength属性可以设置为0吗
    我设置等0 进入页面后第一次有效果,,如果没有选择任何提示的内容 进入其他控件的焦点 在返回 这个本文提示框 就没有效果了,只能重新刷新页面以后才有效果
    结果就是只有加载页面的第一次 才会有提示
    请问如何解决
    还有我想问问 AutoCompleteExtender的MinimumPrefixLength属性 触发了文本框的什么事件 onchange?
     回复 引用   
  45. #3185楼 小梵[未注册用户]2009-12-07 22:25
    楼主也有不懂的地方嘛。呵呵。。那麻烦楼主能推荐一个比较不错的模板机制吗?希望简单易懂的
     回复 引用   
  46. #3186楼[楼主] Jeffrey Zhao      2009-12-07 22:29
    @小梵
    DZ没有用过,怎么会懂。StringTemplate可以看看。
     回复 引用 查看   
  47. #3187楼[楼主] Jeffrey Zhao      2009-12-07 22:30
    @enily
    不清楚,看文档吧。
     回复 引用 查看   
  48. #3188楼 Freewind      2009-12-08 13:42
    帮忙看看我的问题吧,谢谢! 3183楼
     回复 引用 查看   
  49. #3189楼 actberw      2009-12-09 12:48
    老赵你好,我想问一下.在jquery中用$.post()进行传值的时候,中文乱码,网上查了一下说实$.post()用的是utf-8编码方式,而c#中的string用的是unicode编码,页面用的也是unicode编码.我更该编码方式也不行依然是乱码?该怎么解决阿 ?
     回复 引用 查看   
  50. #3190楼[楼主] Jeffrey Zhao      2009-12-09 12:49
    @actberw
    统统用utf-8,网页,源码,XX、XX一切文本都用utf-8……
     回复 引用 查看   
  51. #3191楼[楼主] Jeffrey Zhao      2009-12-09 12:50
    @Freewind
    好久没用了……
     回复 引用 查看   
  52. #3192楼 lazykelvin      2009-12-10 11:13
    老赵 我想问下 用什么方法遍历文件夹最快呢 我遍历1500多个文件夹 需要400多秒 用的是递归 有其他方法吗
     回复 引用 查看   
  53. #3193楼 shp_yt      2009-12-10 21:32
    你好老赵,最近在使用ajax的ModalPopupExtender控件时遇到这么个问题,我想通过2个事件让ModalPopupExtender分别弹出2个poppanel。我想通过后台代码来改变PopupControlID的值来实现,现在可以弹出不同poppanel,但问题是触发控件需要点击2次才能改变 PopupControlID的值,第一遍任然是原poppanel。我用断点跟踪发现点击第1遍时PopupControlID已经被改变,但弹出的还是原poppanel。我的代码是
    protected void lbtnExpert_Click(object sender, EventArgs e)
    {
    LinkButton lbtnExpert = sender as LinkButton;
    GridViewRow row = (GridViewRow)lbtnExpert.NamingContainer; string strId = row.Cells[1].Text;
    Session["shipid"] = strId;
    //
    if (ModalPopupExtender1.PopupControlID=="ModalPanel1")
    {
    ModalPopupExtender1.PopupControlID = "ModalPanel2";
    ModalPopupExtender1.CancelControlID = "btnCanel1";
    ModalPopupExtender1.OkControlID = "btnSave1";
    } UpdatePanel3.Update();
    ModalPopupExtender1.Show();
    //ModalPopupExtender2.Show();
    }
     回复 引用 查看   
  54. #3194楼[楼主] Jeffrey Zhao      2009-12-10 23:13
    引用lazykelvin:老赵 我想问下 用什么方法遍历文件夹最快呢 我遍历1500多个文件夹 需要400多秒 用的是递归 有其他方法吗

    记得最快的方法是利用Native API进行流式的遍历……
     回复 引用 查看   
  55. #3195楼 lsjwzh      2009-12-12 13:42
    关于cache的一个疑惑..
    我的数据从数据库取出来后保存在dataset中,然后将dataset保存在 httpruntime 的 cache中去,n个用户同时访问我的cache中的dataset数据,会出现有的用户数据取出来的不完整,
    dataset ds = httpruntime.cache["dataset"]
    然后循环ds的数据,会发现在循环的过程中ds的rows.count会有变化,当然这个时候有其他的用户在访问。

    不是说Cache是线程安全的吗???糊涂了....
     回复 引用 查看   
  56. #3196楼 lsjwzh      2009-12-12 13:57
    老赵顺便给推荐本讲线程啊,并发啊比较详细的书吧....
    谢谢啦.
     回复 引用 查看   
  57. #3197楼[楼主] Jeffrey Zhao      2009-12-12 14:30
    @lsjwzh
    concurrent programming on windows
     回复 引用 查看   
  58. #3198楼[楼主] Jeffrey Zhao      2009-12-12 14:31
    @lsjwzh
    cache肯定是线程安全的,不过你是不是多个线程在同时修改这一个dataset对象?
     回复 引用 查看   
  59. #3199楼[楼主] Jeffrey Zhao      2009-12-12 14:31
    @shp_yt
    不懂asp.net ajax了……
     回复 引用 查看   
  60. #3200楼 lsjwzh      2009-12-12 14:57
    @Jeffrey Zhao
    哦...我想我搞错含义了...
    那么是不是可以这样:
    DataSet dataset = (DataSet)HttpRuntime.Cache["dataset"];
    DataSet datasetCopy=dataset.Copy();
    datasetCopy.Tables.Add();
    .....
    HttpRuntime.Cache["dataset"] = datasetCopy;
    Cache的线程安全是不是说:"HttpRuntime.Cache["dataset"] = datasetCopy;" 是安全的.
     回复 引用 查看   
  61. #3201楼 RingStar[未注册用户]2009-12-12 20:26
    我最近做了个网站,想静态化下,请问下采用哪种方式比较好?你的衣橱网站应该也有静态化吧?
     回复 引用   
  62. #3202楼 shp_yt      2009-12-12 21:06
    引用Jeffrey Zhao:
    @shp_yt
    不懂asp.net ajax了……

    不会吧,老赵。ajax可是看了你的课程后才开始用的啊
     回复 引用 查看   
  63. #3203楼[楼主] Jeffrey Zhao      2009-12-12 21:09
    @shp_yt
    2、3年前的事情了吧。
     回复 引用 查看   
  64. #3204楼[楼主] Jeffrey Zhao      2009-12-12 21:09
    引用lsjwzh:
    @Jeffrey Zhao
    Cache的线程安全是不是说:"HttpRuntime.Cache["dataset"] = datasetCopy;" 是安全的.

    是的
     回复 引用 查看   
  65. #3205楼[楼主] Jeffrey Zhao      2009-12-12 21:10
    引用RingStar:我最近做了个网站,想静态化下,请问下采用哪种方式比较好?你的衣橱网站应该也有静态化吧?

    缓存作充足了没有?试过其他优化方式没有?
     回复 引用 查看   
  66. #3206楼 RingStar[未注册用户]2009-12-12 22:43
    缓存也做了一些,不过我对WEB项目优化这方面了解的不多,请问优化方式都哪些,都可以在哪些方面进行优化?
     回复 引用   
  67. #3207楼[楼主] Jeffrey Zhao      2009-12-12 23:15
    @RingStar
    缓存,还有前端优化,可以看high performance web site.
     回复 引用 查看   
  68. #3208楼 老马的家      2009-12-13 11:56
    赵老师:
    我想问个问题,关于网站架构的题,具体实现应该是css实现吧,css我也懂。就是一直没搞明白一个问题。比如说:好多网站像人人网,QQ空间他们都能轻松的切换皮肤,还有咱们博客园网站也可以切换皮肤,我想知道这是怎么实现的,能给个答案吗?或者给些提示,或者告诉我应该从哪方面入手去实现这个功能。
     回复 引用 查看   
  69. #3209楼 sunlife      2009-12-13 14:46
    赵老师,我以前都是开发WEB方面的应用系统的。最近要做一个网站,对性能前断就要求比较高,最近看了你的一些文章很受启发。特别是《为WebForms说几句话,以及一些ASP.NET开发上的经验》系列。你说应该抛弃ViewState、PostBack。是的这些对于互联网应用来说是不好。那微软提供的简单的一些服务器端控件就不能用了吧。我们要自己开发一些纯的控件吗?Control模型(或者说组件化模型)是WebForms的亮点核心。那我们开发中应该如何来开发组件呢。请老师指点下。
     回复 引用 查看   
  70. #3210楼[楼主] Jeffrey Zhao      2009-12-13 15:32
    @老马的家
    博客园就是不同的皮用上完全不同的HTML,CSS而已。
     回复 引用 查看   
  71. #3211楼[楼主] Jeffrey Zhao      2009-12-13 15:33
    @sunlife
    我没说应该抛弃,而是“如果你看了不爽”就“可以抛弃一部分”。
    我一般不自己开发控件,最多用ascx包一下吧。
    然后就用一些基本功能,例如button之类的。
     回复 引用 查看   
  72. #3212楼 sunlife      2009-12-13 16:01
    噢,我知道了。谢谢!不过这些确实会影响网站的用户体验和性能。是的usercontrol还是比较好的。可以重复利用还方便维护。
     回复 引用 查看   
  73. #3213楼 sunlife      2009-12-14 08:02
    我最近在使用nhibernate,自己手写hbm文件和实体文件,感觉比较麻烦,如果用代码生成器也会比较麻烦。不知道有没有什么比较好的解决方式?请问nhibernate我定义了hbm文件有没有办法通过hbm文件生成数据库的数据表?
     回复 引用 查看   
  74. #3214楼[楼主] Jeffrey Zhao      2009-12-14 10:24
    @sunlife
    可以用hbm生成数据表。
    觉得hbm麻烦可以用Fluent NHibernate。
     回复 引用 查看   
  75. #3215楼 sunlife      2009-12-14 11:25
    hbm生成数据表要用特殊工具吗?Fluent NHibernate与NHibernate使用哪个会对我们产品更好呢?
     回复 引用 查看   
  76. #3216楼 过客5678[未注册用户]2009-12-16 08:36
    老赵,你好!
    请教一下,
    class Test1 {
    public DemoClass toObject(DbDataReader reader) {
    DemoClass obj = new DemoClass();
    obj.Id = reader["id"].ToString();
    obj.Name = reader["name"].ToString();
    obj.CreateDate = ((reader["createDate"] != null) ? (DateTime)reader["createDate"] : default(DateTime));

    return obj;
    }
    }
    我现在想获取这个toObject方法中reader的列名称 {id,name,createDate};
    你能帮助我吗?十分感谢。
    (不是我匿名,而是我没有注册博客园。)
     回复 引用   
  77. #3217楼 路人甲9527[未注册用户]2009-12-16 16:21
    老赵你好 最近在学习您的ASP.NET AJAX系列课程
    刚看了13讲的ProfileService开始写几个例子
    我使用vs08创建Web项目在代码里没有Profile属性的提示
    而创建一个网站就可以在页面中使用Profile.属性

     回复 引用   
  78. #3218楼 lsjwzh      2009-12-18 11:19
    您的线程池系列后有一个小测试.
    这个代码是在控制台下的.
    得知asp.net的请求处理线程也是在线程池中时,
    我在aspx页面中应用了该代码...修改如下:
           public void IoThread()
            {
                ThreadPool.SetMinThreads(5, 3);
                ThreadPool.SetMaxThreads(5, 3);
    
                ManualResetEvent waitHandle = new ManualResetEvent(false);
    
                Stopwatch watch = new Stopwatch();
                watch.Start();
                StreamWriter rw1 = File.CreateText(@"c:/myTextStart.txt");
                rw1.WriteLine(watch.Elapsed + String.Format("{0}: Task Start. ThreadID: " + Thread.CurrentThread.ManagedThreadId, watch.Elapsed));
                rw1.Flush();
                rw1.Close();
    
                WebRequest request = HttpWebRequest.Create("http://www.cnblogs.com/");
                request.BeginGetResponse(ar =>
                {
                    var response = request.EndGetResponse(ar);
                    StreamWriter rw = File.CreateText(@"c:/myTextEnd.txt");
                    rw.WriteLine(watch.Elapsed + String.Format("{0}: Task End.This is an I/O Thread. ThreadID: " + Thread.CurrentThread.ManagedThreadId, watch.Elapsed));
                    rw.Flush();
                    rw.Close();
                }, null);
    
                for (int i = 0; i < 10; i++)
                {
                    ThreadPool.QueueUserWorkItem(index =>
                    {
    
                            StreamWriter rw = File.CreateText(@"c:/myText" + index + ".txt");
                            rw.WriteLine(String.Format("{0}: Task {1} started. ThreadID: " + Thread.CurrentThread.ManagedThreadId, watch.Elapsed, index));
                            rw.Flush();
                            rw.Close();
                            //waitHandle.WaitOne();
                        waitHandle.WaitOne();
                    }, i);
                }
                
            }
    


    我的猜想是,由于接受请求的线程也是线程池的一员,所以,
    会生成myText0.txt,
    myText1.txt
    myText2.txt
    myText3.txt
    myText4.txt
    myTextEnd.txt
    myTextStart.txt
    其中myText4.txt中显示的线程id应该和myTextStart.txt
    中显示的线程id是一样的.
    但是实际结果却是生成了
    myText0.txt,
    myText1.txt
    myText2.txt
    myText3.txt
    myTextEnd.txt
    myTextStart.txt
    myText3.txt中的线程id与myTextStart.txt中的线程id是一样的.
    而且页面也卡死了.
    可是代码中限制的线程是5个啊!
    还有一个线程哪去了呢?
    为什么页面也卡死了呢???
    劳烦指点一下.3q
     回复 引用 查看   
  79. #3219楼 zhoujie      2009-12-18 11:44
    请教个问题:C#编译器是否能做到没有使用的类或方法不编译到程序集里?
     回复 引用 查看   
  80. #3220楼 麦子|君子兰      2009-12-18 13:06
    老赵,请教一个问题。
    我想做表达式树访问对象的属性值,但是碰到了个麻烦事,不能访问匿名对象的属性。 我不知道应该怎么处理,对表达式树理解不够。

            public static object GetPropertyValue<T>(this T model, string name)
            {
                var type = model.GetType();
    
                var property = type.GetProperty(name);
                if (property == null)
                    return null;
                //传参 类型为type
                var getParameter = Expression.Parameter(type, "model");
                //获取属性
                var getProperty = Expression.Property(getParameter, property);
                //转为object类型
                var convertProperty = Expression.Convert(getProperty, typeof(object));
                //生成表达式
                var lambda = Expression.Lambda<Func<T, object>>(convertProperty, getParameter).Compile();
                return lambda(model);
            }
    
     回复 引用 查看   
  81. #3221楼[楼主] Jeffrey Zhao      2009-12-18 14:16
    @lsjwzh
    asp.net的host有些不同,不要在asp.net里搞ThreadPool
     回复 引用 查看   
  82. #3222楼[楼主] Jeffrey Zhao      2009-12-18 14:16
    @zhoujie
    不能。
     回复 引用 查看   
  83. #3223楼[楼主] Jeffrey Zhao      2009-12-18 14:18
    @麦子|君子兰
    一下子没看出问题来,什么错误?
     回复 引用 查看   
  84. #3224楼[楼主] Jeffrey Zhao      2009-12-18 14:19
    引用sunlife:hbm生成数据表要用特殊工具吗?Fluent NHibernate与NHibernate使用哪个会对我们产品更好呢?

    Fluent NHiberante是NH的辅助工具。
     回复 引用 查看   
  85. #3225楼 麦子|君子兰      2009-12-18 14:25
    @Jeffrey Zhao

    类型为“<>f__AnonymousType0`2[Comment,System.Int32]”的 ParameterExpression 不能用于类型为“System.Object”委托参数
    -------------------------
    在创建表达式那句出现的异常
     回复 引用 查看   
  86. #3226楼 lsjwzh      2009-12-18 14:26
    @Jeffrey Zhao
    哦....
     回复 引用 查看   
  87. #3227楼 过客5678[未注册用户]2009-12-18 17:25
    老赵,另开新篇吧。这一篇也太长了吧。
    根本不好翻了。有时还显示不出来评论列表中的东西来。
     回复 引用   
  88. #3228楼 lsjwzh      2009-12-20 17:50
    呃...还是关于lock(typeof(MyType))的问题...在博问里面提问时
    您说Type是跨appdomain的...回去看了些关于这个的东西...发现

    http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/SDaskgui06032003.mspx?mfr=true
    中有段话:"由于在当前版本的 .NET 运行库中,类型对象有时会在应用程序域之间(但不是在进程之间)共享。(通常这没有问题,因为它们是不变的。)这意味着,运行在其他应用程序域(但在同一进程)中的另一个应用程序有可能对您要锁定的类型对象进行加锁,并且始终不释放该类型对象,从而使您的应用程序发生死锁。并且,这样可以很容易地获得类型对象的访问权限,因为该对象具有名称 — 该类型的完全限定名!请记住,lock/SyncLock 会一直阻塞(这是挂起的含蓄说法),直到它可以获得锁定为止。很显然,依靠锁定其他程序或组件可以锁定的对象不是一种很好的做法,并且会导致死锁。"
    还有CLR via c#第二版里面第21章440页也说:"但有时候也有一些程序集希望被几个应用程序共用. .........对于以对应用程序域保持中立方式加载的程序集来说,CLR会为它们维护一个特殊的加载器堆.该加载器堆中所有的类型对象以及这些类型的方法的所有本地代码都会被进程中的所有应用程序域共享...."
    我的问题是:1.对于不被应用程序域共享的类型对象,lock(typeof(MyType))也会跨domain加锁吗?
    2.怎么使程序集对应用程序域保持中立?
     回复 引用 查看   
  89. #3229楼[楼主] Jeffrey Zhao      2009-12-20 17:56
    @lsjwzh
    没听懂你的意思
     回复 引用 查看   
  90. #3230楼[楼主] Jeffrey Zhao      2009-12-20 17:58
    @麦子|君子兰
    var type = model.GetType();
    改成
    var type = typeof(T)
     回复 引用 查看   
  91. #3231楼 lsjwzh      2009-12-20 18:03
    @Jeffrey Zhao
    呃...我的意思是:如果MyType类型对象不被各个appdomain共享,用lock(typeof(MyType))也会影响到 所有的appdomain吗???
    CLR via c# 里面说System.Object等必须的类型是被几个appdomain共用的,那么怎么才能使自定义的MyType 也能被各个appdomain共用呢?
     回复 引用 查看   
  92. #3232楼 lsjwzh      2009-12-20 18:04
    或者说...可以这么问...
    lock(typeof(MyType))的作用效果与
    MyType类型对象是否能被各个appdomain共享
    是否无关?
     回复 引用 查看   
  93. #3233楼 lsjwzh      2009-12-20 18:06
    ....越来越绕了.....
    我想..这样也许清楚些...
    lock(typeof(MyType))的作用效果

    MyType类型对象能否被各个appdomain共享
    有无关系?
     回复 引用 查看   
  94. #3234楼[楼主] Jeffrey Zhao      2009-12-20 18:07
    @lsjwzh
    如果不被共享,当然就不会影响了,但是这是CLR决定的,既然确定了会共享,讨论这个有什么意义……
     回复 引用 查看   
  95. #3235楼[楼主] Jeffrey Zhao      2009-12-20 18:08
    @lsjwzh
    我觉得你应该清楚了,再自己想想吧。其实就是几条“道理”,其他都是推论。还有就是,我觉得对于确定的东西不要做太多“假设……
     回复 引用 查看   
  96. #3236楼 lsjwzh      2009-12-20 18:26
    e...我想...我明白了.....另外..您的建议我记下了...3q
     回复 引用 查看   
  97. #3237楼 lsjwzh      2009-12-20 18:26
    e...我想...我明白了.....另外..您的建议我记下了...3q
     回复 引用 查看   
  98. #3238楼 麦子|君子兰      2009-12-20 19:45
    @Jeffrey Zhao
    多谢老赵,我找到错误的原因了。你上回说没看出来错误是因为确实没有错误。 因为我用了两次obj.GetPropertyValue("Model").GetPropertyValue("Name"),第一次之后返回的是object类型,所以此时Lambda的参数类型变成了object,传递的参数类型却是真实的类型,所以就报错了。

    如果加上类型转换((Test)obj.GetPropertyValue("Model")).GetPropertyValue("Name")就正确了。
    但是正常使用的时候一般不会知道obj的类型。 所以
    我改了一下转换

    public static object GetPropertyValue<T>(this T model, string name)
    {
        var type = model.GetType();
        var property = type.GetProperty(name);
        if (property == null)
            return null;
        //传参 类型为type
        var getParameter = Expression.Parameter(typeof(T), "model");
        //把参数T类型转为真实类型
        var convertParameter = Expression.Convert(getParameter, type);
        //获取属性
        var getProperty = Expression.Property(convertParameter, property);
        //转为object类型
        var convertProperty = Expression.Convert(getProperty, typeof(object));
        //生成表达式
        var lambda = Expression.Lambda<Func<T, object>>(convertProperty, getParameter).Compile();
        return lambda(model);
    }
    
    
     回复 引用 查看   
  99. #3239楼[楼主] Jeffrey Zhao      2009-12-20 20:47
    @麦子|君子兰
    还是应该var type = typeof(T)
     回复 引用 查看   
  100. #3240楼 kisskiki[未注册用户]2009-12-20 20:50
    hi 老赵,我在ecma335文档上(下载地址:http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.pdf)的148页看到这段描述,觉得和自己在实践中有点出入,也许是自己理解有误吧,想请老赵帮忙解答下,描述如下:

    | NativeType ‘[’ ‘+’ Int32 ‘]’

    Array of NativeType with runtime supplied
    element size. The Int32 specifies a parameter to
    the current method (counting from parameter
    number 0) that, at runtime, will contain the size
    of an element of the array in bytes. Can only be
    applied to methods, not fields.
    ------这是描述

    .method int32 M2( int32 marshal(int32), bool[] marshal(bool[+1]) )
    Method M2 takes two arguments: an int32, and an array of bools: the number of elements in that array is
    given by the value of the first parameter.
    ---这是个例子

    按我理解就是+后数字代表的是方法的第几个参数指明了数组的元素个数,由序数0开始,这里我就有个问题既然从序数0开始,那+1不是指第二个参数不就是数组本身?
     回复 引用   
  101. 评论共33页: 首页 上一页 25 26 27 28 29 30 31 32 33 
发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 543276 sDRd4jYnkk8=