UserControl调用Umbraco的Data Types
本篇文章介绍的是基于Umbraco CMS技术搭建的网站所使用的相关技术。
1. 需求:
网站前台功能有个表单提交,表单控件用到下拉列表(dropdownlist),需求是在dropdownlist的数据来绑定umbraco的后台数据,而不是直接写在usercontrol的aspx页面中。好处在于如果有更改可以直接在umbraco的后台进行编辑而不更改网站代码。
2. 尝试方法
首先可以确定的是,我们必须在umbraco的Developer页签的Data Types中创建一个Type,类型为dropdownlist,然后录入相关数值,然后前台界面绑定此DataType,以后维护相关的DataType就OK了。
那么,创建完后前台aspx界面怎么进行对DataType绑定?一般情况下aspx页面可以引用filed字段或者是引用marco。
所以我想到的办法是,先创建一个xslt文件然后映射Marco文件,然后页面就可以引用Marco文件了。
Xslt中的代码,如下:
<!DOCTYPE xsl:stylesheet[
<!ENTITYnbsp " ">
]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets" xmlns:tagsLib="urn:tagsLib" xmlns:BlogLibrary="urn:BlogLibrary"
exclude-result-prefixes="msxmlumbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMathExslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets tagsLibBlogLibrary ">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:variable name="categoryList" select="umbraco.library:GetPreValues('1282')//preValue"/>
<xsl:template match="/">
<!--<xsl:copy-ofselect="$currentPage" />-->
<!--start writing XSLT -->
<ul>
<li>
<a href="/aboutus/medianews.aspx?c1=media&c2=">全部</a>
</li>
<li>|</li>
<xsl:for-each select="$categoryList">
<li>
<a href="/aboutus/medianews.aspx?c1=media&c2={@id}">
<xsl:value-of select="." />
</a>
</li>
<xsl:if test="position()!=last()">
<li>|</li>
</xsl:if>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
Aspx页面代码如下:
<umbraco:Macro Alias="marcoAlias" runat="server"></umbraco:Macro>
可以值得肯定的是这个办法确实可以准确的将DataType的值显示出来,但是随之而来的问题是,表单需要提交,怎么获得xslt中的datatype的值呢?这让人很是头疼。
问题无法解决中,此方法待定。。。。。。
3. 正确方法
在尝试方案中,也不是所有步骤都是否定的,第一个步骤创建DataType这是正确的。那么问题还要回到aspx页面如何调用DataType类型?
在aspx页面仍然使用<aspx:DropDownList>,在aspx.cs页面获取DataType的值然后DropDownList的item进行添加进行绑定。
Cs代码如下:
usingumbraco.cms.businesslogic.datatype;
varvalues = PreValues.GetPreValues(1159);
//1159为dataType的id
foreach (DictionaryEntry de in values)
{
PreValue value =(PreValue)de.Value;
ListItem li = new ListItem();
li.Text = value.Value;
li.Value = value.Id.ToString();
tb_Title.Items.Add(li);
}
表单进行提交时tb_Title.SelectedItem.value。
这样就大功告成了,dropdownlist的值就可以对通过umbraco的DataType进行维护了,而不需要对网站代码进行需改。
最新文章
- JavaScript之职责链模式
- AutoMapper(五)
- Java加载资源文件几种方法
- Ubuntu 安装OpenERP
- WIN7-64位安装PLSQL-Developer步骤
- ASP.NET MVC 网站开发总结(二)——一个或多个文件的异步或同步上传
- 累积进度图及本周PSP饼状图
- [云] 1、云服务器——从ILP\DLP\TLP谈起
- 牛客网上的剑指offer题目
- Hangover 分类: POJ 2015-06-11 10:34 12人阅读 评论(0) 收藏
- GIT之二 基础篇(1)
- rbenv安装ruby2.3.0在线安装不上。老子出绝招了(更新)
- jQuery基础选择器
- JAXB - The Object Factory
- 读书笔记 effective c++ Item 26 尽量推迟变量的定义
- [转]VS2015 Cordova Ionic移动开发(一)
- Django学习手册 - 基于requests API验证(二)
- scatter
- BP神经网络测试MNIST记录
- orcl 中upper()和lower()和initcap()的用法
热门文章
- 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- C#中多线程写DataGridView出现滚动条导致程序卡死(无响应)的解决办法
- jquery直接获取html页面元素
- bootstrap table 服务器分页
- uva 1396 - Most Distant Point from the Sea
- USB C和USB 3.1傻傻分不清?这篇文章可以帮你
- BZOJ3188: [Coci 2011]Upit
- Apache Commons IO 2.3 几点用法
- HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
- 转载--C语言运算符优先级和口诀