zoukankan      html  css  js  c++  java
  • SharePoint对象模型与ViewState


    ViewState对于大家来说,应该是一点都不陌生的。虽然在ASP.NET中到处可见它的踪迹,但是,我却很少使用它。
    近日,在开发WebPart时,为了避免每一次刷新页面都要重新获取同一个SPList,因此,我使用了ViewState存储
    SPList对象,但是很不幸的是,编译时完全正常,但是到使用时,却很不给面子的一直弹“发生意外错误”。对于这个问题的解决,我经历了如下几步,希望对大家有所帮助:
    Step1: 我跟踪调试WebPart,直到该WebPart的PreRender事件函数执行完毕,就会导致页面意外错误,而且无法再跟踪到
               Render中(因为我的代码中没有重写SaveViewState函数)。
               联想到PreRender事件之后,应该执行的是保存ViewState(即SaveState),而我的WebPart中只有SPList这里用了
               ViewState,那问题多半出在这里了,但是,具体是什么错呢?没辙,因为我跟不进去。
    Step2:  默认情况下,SharePoint出错显示的都是友好信息,而且友好到您基本上无法明白到底出什么错。
                很郁闷的是,一般情况下,我建一个站点,都会更改web.config ,让它显示详细的错误信息,但是,部署webpart
                的这个站点,我偏偏没有更改!
    Step3:   更改web.config,让SharePoint能显示更详细的错误信息:
                 1、 将<SafeMode ... CallStack="false" ...... AllowPageLevelTrace="false">中的CallStackAllowPageLevelTrace的属性设置为“true”。
                 2、<customErrors mode="On" />的mode改为"Off"
    Step4:  再次运行,就得到详细的错误信息:SPList没有被标记为可序列化!
    ------------------------
    至此,才明白出错以及为什么跟不进Render方法的原因,原来是要保存SPList时,无法将对象序列化。
    注:ViewState存储的对象需要是可序列化的。
    ------------------------
    这么一个错误,道道还是不少,希望对大家有用~~
  • 相关阅读:
    Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”
    JS传递参数时对中文进行编码和解码
    点击<a>标签,禁止页面自动跳到顶部的解决办法
    百度地图API用法(传地址)
    asp.net页面按Enter键IE不提交表单
    asp.net同时调用JS和后台的无效的解决
    QQ浏览器不支持JS问题
    html中opacity的使用
    c#中传递参数前加out
    IE下使用jquery ajax失效
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1560918.html
Copyright © 2011-2022 走看看