掷鸡蛋者
发表于: 2010/5/20 14:30 引用 回复 只看该作者 1# TOP
管理员
性别: 男
积分:52173
阅读权限:43385
帖子: 8318
加入时间: 2010/4/29
最后登录: 2019/8/17
1、链接的正确做法
如何在web中使用链接,似乎是一个无须讨论的话题。比如在页面的 html 中这样写:
    <a href="/Article/32.aspx">请点击我</a>

但这种将链接硬编码在html页面的做法,会有几个不方便的后果:
首先,如果你需要将所有链接的后缀名改成 .html,或者不使用后缀名,目的是让seo更加友好,那你怎么做?难道批量替换所有页面吗?
其次,如果Article控制器因为某种原因改了名称,从ArticleController变成了NewsController,你也得逐一到页面中修改链接。

正确的做法不是直接拼接字符串,而是:
    在 html 中使用一个链接的变量,比如这样 <a href="#{articleLink}">请点击我</a>
    然后,在这个 html视图对应的控制器中,设置链接 set( "articleLink", to( Show, 32 ) );
    好处就是上面提到两个方面:
    a)修改链接的后缀名更加方便,只要改一下mvc.config,全站的所有链接都会生效;
    b)重构controller或action的名称不影响页面中的链接。

2、链接的几种形式

    链接到站内网址,其实就是链接到某个 controller 的 action 方法,常用的有如下2种简单形式
   
to( action ) 链接到某action方法(当前controller)
to( action, id ) 同上,但带上id
   
注意,如果action不在当前控制器中,你还可以这样写:  
to( new xxxController().action ) 链接到某个xxx控制器的action方法
to( new xxxController().action, id ) 同上,但带上id

    以上2种方法都是强类型的,在重构的时候会特别方便。
    另外,还有一个 t2( actionName ) 方法,是用于明确不需要appId的场合,其他和to一样。

    更加全面的链接方法是使用 Link 对象,它有更丰富的方法可用,不一定是强类型,还可以使用字符串,较常用的是
   
下面2种和上面的to性质一样  
Link.To( action ) 链接到某action方法
Link.To( action, id ) 同上,但带上id
   
带上了IMember参数  
Link.To( member, action ) 链接到某member的action中
Link.To( IMember member, String controller, String action, int id ) 使用字符串,不使用强类型
   
直接链接到 IMember  
Link.ToMember( IMember member )  
Link.ToUser( String friendUrl )  

    在“我记录综合系统”中,为了方便,专门为链接到IApp和IAppData的对象自定义了链接对象 alink
   
alink.ToAppData( appData ) 链接到某个 IAppData 对象
alink.ToApp( IApp app, MvcContext ctx ) 链接到某个 IApp

    这些看似不多的链接对象,完成了整个“我记录网站综合系统”的所有链接,基本上都是强类型的。正式有了这套链接系统,所以你才可以轻松的切换网站的后缀名。

3、翻页链接的形式
    你不需要管理翻页的链接。因为 a)翻页数据wojilu orm直接替你打理了,b)翻页链接wojilu mvc也直接替你自动生成了
    如果第一页是 Article/2, 那么第二页链接的形式就是 Article/2/p2,应该算清楚明白。

关键词 链接, url 修改tag
相关文章
而死,不默而生
zycheer
发表于: 2010/5/20 20:35 引用 回复 只看该作者 2# TOP
江湖大侠
性别: 男
积分:930
阅读权限:541
帖子: 127
加入时间: 2010/5/4
最后登录: 2013/8/23
不错,强大。 那里全部默认是ID吗,假如我是PID,如何写。
掷鸡蛋者
发表于: 2010/5/20 22:10 引用 回复 只看该作者 3# TOP
管理员
性别: 男
积分:52173
阅读权限:43385
帖子: 8318
加入时间: 2010/4/29
最后登录: 2019/8/17
不错,强大。 那里全部默认是ID吗,假如我是PID,如何写。
zycheer at 2010-5-20 20:35

 参数用什么名称是不重要的,随便写,只要它是整数就行。

而死,不默而生
qq418814
发表于: 2010/7/21 13:16 引用 回复 只看该作者 4# TOP
江湖新秀
性别: 男
积分:200
阅读权限:80
帖子: 8
加入时间: 2010/7/20
最后登录: 2011/10/10
如果ID是GUID怎么办
掷鸡蛋者
发表于: 2010/7/21 13:51 引用 回复 只看该作者 5# TOP
管理员
性别: 男
积分:52173
阅读权限:43385
帖子: 8318
加入时间: 2010/4/29
最后登录: 2019/8/17
如果ID是GUID怎么办
qq418814 at 2010-7-21 13:16

 暂不支持GUID主键

而死,不默而生
坚强
发表于: 2011/9/14 14:01 引用 回复 只看该作者 6# TOP
江湖新秀
性别: 男
积分:271
阅读权限:349
帖子: 63
加入时间: 2011/8/20
最后登录: 2014/10/18
这个我需要,我(没有房顶)。
坚强
发表于: 2011/9/14 14:16 引用 回复 只看该作者 7# TOP
江湖新秀
性别: 男
积分:271
阅读权限:349
帖子: 63
加入时间: 2011/8/20
最后登录: 2014/10/18
我有发现了,我要是多个id咋整。to(action,hid,cid,rid)
掷鸡蛋者
发表于: 2011/9/14 14:48 引用 回复 只看该作者 8# TOP
管理员
性别: 男
积分:52173
阅读权限:43385
帖子: 8318
加入时间: 2010/4/29
最后登录: 2019/8/17
我有发现了,我要是多个id咋整。to(action,hid,cid,rid)
坚强 at 2011-9-14 14:16

这里有教程:http://www.wojilu.com/Common/Page/74 

而死,不默而生

快速回复主题