1.MVC中当做了伪静态后如果你想用a标签结合后台传过来的数据生成一个链接的话如:<a href="/View/763.html">本命佛</a>
你可以选择扩展url( UrlHelper类型),通过urlhelper中的RouteUrl方法来匹配路由名字返回url
如下:HTML代码
<a href='<%=Url.ViewWord(word) %>'><img src='<%=word.Image.ReplaceContent("show") %>' alt="<%=word.Title %>" style="height: 140px; width: 170px;" class="pic" /></a>
url扩展方法
public static string ViewWord(this UrlHelper urlHelper, Word word) { return urlHelper.RouteUrl("View", new { id = word.WordID }); }
说明:其中View是一个路由的名字,定义如下,最后根据id返回/View/763.html
routes.MapRoute( "View", "View/{id}.html", new { controller = "Wiki", anonymous = true, action = "View", id = "" }, new { id = @"[\d]{1,12}" }, controllerNamespaces );
2.还可以通过 <%= Html.ActionLink(word.Title, "View", new { id = word.WordID })%>生成一个超链接(说明:View是action的名字)
action定义如下:
[OutputCache(CacheProfile = "Cache20M", VaryByParam = "id")]//Duration = 60 [ActionName("View")] public virtual object ViewWord(int id) { if (id <= 0) return RedirectToAction("CreateIndex"); EditorWord word = m_WikiSwervice.GetWord(id); if (word == null) { EditorWord editWord = m_WikiSwervice.GetEditorWord(id); if (editWord == null) return RedirectToAction("CreateIndex"); else if ((editWord.Visible != null) && !(bool)editWord.Visible) { return RedirectToAction("NoApproved", new { id = id }); } } else { word.Dir = word.Content.Catalog(); word.Content = word.Content.UBB2Html().ReplaceContent("show"); if (!Aqioo.Modules.Wiki.Utility.Common.IsHaveCookie(Aqioo.Modules.Wiki.Utility.Common.GetClientIP + "_view_" + id)) { m_WikiSwervice.UpdateViews(id); word.Views = word.Views + 1; } } return word; }
说明:这里通过actionName属性给action起了一个别名
浙公网安备 33010602011771号