热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MOSS2010ContentType(内容类型)开发中的一个问题及其解决方法

内容类型是SharePoint中一个很重要的功能,简单地说,它使得我们可以定制列表或者文档库的项目模板。关于这个方面,我以前也写过一些文章介绍,请参考http:zzk.cnblogs.com

内容类型是SharePoint中一个很重要的功能,简单地说,它使得我们可以定制列表或者文档库的项目模板。关于这个方面,我以前也写过一些文章介绍,请参考

http://zzk.cnblogs.com/s?w=blog%3Achenxizhang%20%E5%86%85%E5%AE%B9%E7%B1%BB%E5%9E%8B

 

 

今天要讲的一个问题,是我们在项目中遇到的,虽然不大,但却是困扰了很久,而且百思不得其解(以前在MOSS 2007的时候却没有这个问题)。

这个问题最近与微软中国这边有关的朋友交流才得到结论,有点让人哭笑不得的。不过,还是要谢谢

 

范例是一个简单的Solution。我大致介绍一下里面的内容

1. 基于Item这种基类型,创建了一个ContentType,定义了一个特殊的Field,并且定义了特殊的New,Edit,Display页面

我们的目的是希望用户使用该类型类型的话,新建,编辑和查看的页面都是我们定制过的

 


  xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<ContentType ID="0x0100b05ebf7c0a1b48c5aa4aae0a9a8b1067"
Name="SharePointProjectSample - SampleContentType"
Group="Custom Content Types"
Description="My Content Type"
Inherits="TRUE"
Version="0">
<FieldRefs>
<FieldRef ID="{9da97a8a-1da5-4a77-98d3-4bc10456e700}" Name="Comments" DisplayName="Comments"/>
<FieldRef ID="{F7D24529-1883-4686-A6DA-6BA772D6CE7D}" Name="Test" DisplayName="Test"/>
FieldRefs>
<XmlDocuments>
<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
<FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
<New>
_layouts/SharePointProjectSample/New.aspx
New>
<Edit>
_layouts/SharePointProjectSample/Edit.aspx
Edit>
<Display>
_layouts/SharePointProjectSample/Display.aspx
Display>
FormUrls>
XmlDocument>
XmlDocuments>
ContentType>
Elements>

2. 基于上面这个ContentType,我创建了一个ListDefinition

3. 基于上面这个ListDefinition,我创建了一个ListInstance

image

解决方案部署,没有发现任何问题。我们可以看到一个新的列表创建起来了。

clip_image001

但是,点击”Add new item”的时候,却会发现如下的错误

clip_image002

我们使用IE 9自带的Developer Tools进行调试看看

clip_image002[5]

我们可以看到,其实它确实是想去打开我们那个New.aspx,但我看那个地址编码似乎是有问题的,前面有一串%20,这个应该是空格的意思

那么,这是为什么呢?其实是因为我们在定义ContentType的时候,那个xml文件中有空格。我们将它修改成下面这样子(请注意粗体部分)

 


  xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

<ContentType ID="0x0100b05ebf7c0a1b48c5aa4aae0a9a8b1067"
Name="SharePointProjectSample - SampleContentType"
Group="Custom Content Types"
Description="My Content Type"
Inherits="TRUE"
Version="0">
<FieldRefs>
<FieldRef ID="{9da97a8a-1da5-4a77-98d3-4bc10456e700}" Name="Comments" DisplayName="Comments"/>
<FieldRef ID="{F7D24529-1883-4686-A6DA-6BA772D6CE7D}" Name="Test" DisplayName="Test"/>
FieldRefs>
<XmlDocuments>
<XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
<FormUrls xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms/url">
<New>_layouts/SharePointProjectSample/New.aspx New>
<Edit>_layouts/SharePointProjectSample/Edit.aspx Edit>
<Display>_layouts/SharePointProjectSample/Display.aspx Display>

FormUrls>
XmlDocument>
XmlDocuments>
ContentType>
Elements>
重新部署,页面出来了,整个世界清静了
 
【备注】个人觉得这个问题应该在产品级别修正掉,而不是给开发人员这种强制性的要求。其实不难的,不是吗,读取那个地址字符串之后,调用trim方法即可。呵呵
 
目前而言,大家还是稍加注意吧,不要有空格
 
 
 
 

推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 开发笔记:(002)spring容器中bean初始化销毁时执行的方法及其3种实现方式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了(002)spring容器中bean初始化销毁时执行的方法及其3种实现方式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 标题: ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
author-avatar
ERIK又
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有