当前位置:编程学习 > C#/ASP.NET >>

一个ASP .NET项目的核心功能遭遇障碍,急求解决方案!

现正在做一个asp .net的项目,是从一个php或者java项目移植过来的,但是却看不到任何源代码,也看不到数据库,只有一个网站能登陆上去试用。现在一个核心功能遇到的障碍,不知道怎么解决。


大概是这样的:

网站管理员,可以往数据库里面上传网页模板。

网页模板里面定义了一些变量区域,可以插入图片,文字等。

网站管理员可以把模板应用于相应的内容组(首页,左图右文,左文右图,全图等)

编辑人员在在相应内容组下上传新闻内容,包括文字,图片。系统自动套用网页模板,生成html文件。


现在的难点: 不知道这个系统所用的网页模板遵循什么规则,变量名称,类型,个数都不知道。需求方又要求我一定要做成支持万能模板,就是甭管客户上传什么模板,都能实现自动套用生成html文件,我个人感觉如果没有对模板的变量做一定约定,几乎不可能。不知道是不是我对某些技术已经不了解了,网站的技术文档里说他们上传的网页模板,叫CML模板,但我怎么也搜不到相关资料,我怀疑是他们把XML打成CML了。如果有解决方案,哪怕给点线索也好,谢谢了!

补充信息,我能从网站里拷下来的一个网页模板如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>$!{_title}</title>
</head>
<body>
<table width="320" border="0" align="center" cellpadding="0" cellspacing="0">
 #foreach ($_columns in $theList) 
  <tr>
    <td colspan="3" align="left"><img src="$!{_columns.get("Img_Template")}"/></td>
  </tr> 
  <tr>
    <td width="20"> </td>
    <td width="280" align="left" valign="top">
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="25" colspan="2">
        <table width="18%" height="212" border="0" cellpadding="0" cellspacing="0">
            <tr>
             #if ($!{_columns.get("Img_People2")}!="")
              <td width="4%"   rowspan="4" bgcolor="#FF3333"><img src="$!{_columns.get("Img_People2")}"  /></td>
             
             #end  
              <td width="1%" rowspan="4" bgcolor="#FF3333"></td>
              <td  width="9%" bordercolor="#FF6600" bgcolor="#FF3333"  class="STYLE5">$!{_tent1}</td>     
          </tr>
            <tr>
                 <td bgcolor="#FF3333"  class="STYLE5">$!{_tent13}</span></td>
            </tr>
            <tr>
                <td bgcolor="#FF3333"  class="STYLE5">$!{_tent14}</span></td>
            </tr>
            <tr>
                <td bgcolor="#ff4422"  class="STYLE5">$!{_tent15}</span></td>
            </tr>
              
              <tr>
                <td colspan="3"><img src="images/cut5.gif" /></td>
              </tr>             
              <tr>
              <td colspan="3" align="left">            
              <a href="$!{_columns.get("link_C0")}" class="bord01"><img src="images/bnr.jpg"/></a>
              </td>
            </tr>           
            <tr>
              <td colspan="3" align="center" class="STYLE2" ><a href="$!{_columns.get("link_C0")}">$!{_columns.get("_C0")}</a></td>
            </tr>
             #if ($_columns.get("_C0")!="")
            <tr>
              <td colspan="2"><a href="$!{_columns.get("link_C0")}" class="bord01"><img src="$!{_columns.get("Img_People16")}" bgcolor="#FF3333"/></a></td>
              <td ><a href="$!{_columns.get("link_C0")}" class="A">$!{_tent6}... [详情]</a></td>         
            </tr>
            #end
          </table>
        </td>
      </tr>
      
      <tr>
        <td height="10" colspan="2" align="center"></td>
      </tr>
      <tr>
        <td height="1" colspan="2" align="center" bgcolor="#666666"></td>
      </tr>
     
      <tr>
        <td height="10" colspan="2" align="center"></td>
        </tr>  
      #if ($_columns.get("_C1")!="")
          <tr>
            <td width="10" align="left"><img src="images/arrow.gif" width="9" height="15" /></td>
            <td  height="28"><a href="$!{_columns.get("link_C1")}" class="A" >$!{_columns.get("_C1")}</a></td>
          </tr>
      #end
      #if ($_columns.get("_C2")!="")
          <tr>
            <td width="10" align="left"><img src="images/arrow.gif" width="9" height="15" /></td>
            <td  height="28" ><a href="$!{_columns.get("link_C2")}" class="A"  >$!{_columns.get("_C2")}</a></td>
          </tr>
      #end
      #if ($_columns.get("_C3")!="")
          <tr>
            <td width="10" align="left"><img src="images/arrow.gif" width="9" height="15" /></td>
            <td  height="28"><a href="$!{_columns.get("link_C3")}"  class="A" >$!{_columns.get("_C3")}</a></td>
          </tr>
      #end
      #if ($_columns.get("_C4")!="")
          <tr>
            <td width="10" align="left"><img src="images/arrow.gif" width="9" height="15" /></td>
            <td  height="28"><a href="$!{_columns.get("link_C4")}"  class="A" >$!{_columns.get("_C4")}</a></td>
          </tr>
      #end     
 <tr height="28"><td height="28" colspan="2"  align="left" class="style6" bgcolor="#FF0000"> 
 <center><a href="http://wap.cnr.cn" >互动</a> </content>
</td>
</tr>
    </table>
    </td>
    <td width="12"> </td>
  </tr>
#end
<tr>
<td height="10" colspan="2" align="left">
 <table width="296" border="0" align="center" height="58" cellpadding="0" cellspacing="0" bgcolor="">                     
</table>
</td>
</tr>
</table>
</body>
</html>


谁能帮我看看有没有什么线索,这个模板代码里面甚至还有for之类的循环语句,让人很是头大不知道怎么用它动态生成html文件。我的理解是元素个数,元素类型,元素名称必须要有限制和约定,但是需求方非说一定要支持万能模板。这个问题几乎关系到整个项目的成败,目前已经严重阻碍项目进度了,拜托大家了!谢谢!
--------------------编程问答-------------------- 严重同情楼主中,帮顶,但我不会。
这个是asp的页面吧。
楼主其实要做的应该是一个cms系统,找找相关资料吧,不过这个东西不好做。
看来接项目之前先弄清楚需求是至关重要的,再次同情楼主。 --------------------编程问答-------------------- cms = Content Management System...?

不全是吧,这个项目有点盗版的味道,把竞争对手的项目直接抄过来,但这样的代价就是拿不到任何资料。。。 --------------------编程问答-------------------- 其实要做好还是非常麻烦的。
本质上来说还是基于字符串替换,正则匹配,字符串类的处理。但要想做灵活做好,生成速度快等,其实工作量还是比较大 --------------------编程问答--------------------
引用 3 楼 jiezi316 的回复:
其实要做好还是非常麻烦的。
本质上来说还是基于字符串替换,正则匹配,字符串类的处理。但要想做灵活做好,生成速度快等,其实工作量还是比较大


现在的问题是有没有解决方案。。。我感觉没有,如果有万能模板的解决方案,工作量大点也还好了。。。
我的疑问是有可能实现对不限制元素个数,类型,名称的模板做自动套用么? 速度不是问题,都不是很大的模板。 --------------------编程问答-------------------- 怎么会没有解决方案咧?大致就应该是这样的东西啊,有一个或n个模板文件,文件应该是一个html文件,xml文件,xslt等。模板虽然是活的,但是里面的规则绝对要你掌握,比如什么样的特殊字符串代表label,什么样的代表textbox等等。这些模板交给后台人员编辑,他们把指定的可编辑的地方编辑。发布到前台,这个过程需要用文件流的方式替换你的内容。然后再到运行时.... 天啊,说的我都觉得难。 --------------------编程问答--------------------
引用 5 楼 symbol_bc 的回复:
怎么会没有解决方案咧?大致就应该是这样的东西啊,有一个或n个模板文件,文件应该是一个html文件,xml文件,xslt等。模板虽然是活的,但是里面的规则绝对要你掌握,比如什么样的特殊字符串代表label,什么样的代表textbox等等。这些模板交给后台人员编辑,他们把指定的可编辑的地方编辑。发布到前台,这个过程需要用文件流的方式替换你的内容。然后再到运行时.... 天啊,说的我都觉得难。


看来还是要有约定啊!!!不能是动态模板啊,你说的其他部分倒不难,不用什么文件流之类的,这个不用发布,生成html存在硬盘上就行了。。。

我揪心的是,模板不做约定,这个程序我没法写了都,难道要我写一个php解释器啊。。。那我的软件是不是还要写一个GUI给用户编辑网页啊,那我就是写了用户也不会用啊。。。。

关键是领导不知道,他手下做技术的人能理解,我是怕领导不理解,呵呵。 --------------------编程问答-------------------- 看来你遇到的不是技术问题啊,楼主,这个世界上怎么会存在万能模板?即使是万能模板也是在你约定下的万能模板,只要你的约定覆盖的足够广就ok。
你应该和领导好好的沟通,要是我,我就这么说:万能模板没有问题,工期也没问题,我需要50万的研发经费(注明是初期,后期还要追加),一个至少4个人的研发团队,其中里面的成员都至少是4年经验的高级工程师,工资8000起,上部封顶,如果您愿意出年薪20万,我们还可以找到资深的架构师来统筹和管理,3个月内绝对搞定,甚至我们可以成立软件公司,卖我们的产品..... --------------------编程问答-------------------- 复杂问题可以简单化        除了变化很多,并且都是独立的  其余都可以通过 FCK来处理  这样就很简单了 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,