本篇文章介绍的是基于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&amp;c2=">全部</a>
      </li>
      <li>|</li>
      <xsl:for-each select="$categoryList">
        <li>
          <a href="/aboutus/medianews.aspx?c1=media&amp;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进行维护了,而不需要对网站代码进行需改。

最新文章

  1. JavaScript之职责链模式
  2. AutoMapper(五)
  3. Java加载资源文件几种方法
  4. Ubuntu 安装OpenERP
  5. WIN7-64位安装PLSQL-Developer步骤
  6. ASP.NET MVC 网站开发总结(二)——一个或多个文件的异步或同步上传
  7. 累积进度图及本周PSP饼状图
  8. [云] 1、云服务器——从ILP\DLP\TLP谈起
  9. 牛客网上的剑指offer题目
  10. Hangover 分类: POJ 2015-06-11 10:34 12人阅读 评论(0) 收藏
  11. GIT之二 基础篇(1)
  12. rbenv安装ruby2.3.0在线安装不上。老子出绝招了(更新)
  13. jQuery基础选择器
  14. JAXB - The Object Factory
  15. 读书笔记 effective c++ Item 26 尽量推迟变量的定义
  16. [转]VS2015 Cordova Ionic移动开发(一)
  17. Django学习手册 - 基于requests API验证(二)
  18. scatter
  19. BP神经网络测试MNIST记录
  20. orcl 中upper()和lower()和initcap()的用法

热门文章

  1. 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
  2. C#中多线程写DataGridView出现滚动条导致程序卡死(无响应)的解决办法
  3. jquery直接获取html页面元素
  4. bootstrap table 服务器分页
  5. uva 1396 - Most Distant Point from the Sea
  6. USB C和USB 3.1傻傻分不清?这篇文章可以帮你
  7. BZOJ3188: [Coci 2011]Upit
  8. Apache Commons IO 2.3 几点用法
  9. HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
  10. 转载--C语言运算符优先级和口诀