我正在使用http://mvcsitemap.codeplex.com/中的MvcSiteMapProvider 为我的项目创建面包屑跟踪.我有一些URL需要传递给相应用户的信息,例如http:// localhost:52306/Home/User?ID = 101101
当我进一步导航到站点地图(例如http:// localhost:52306/Home/User/Details?ID = 101101)并尝试使用痕迹导航链接将我带回"用户"页面时,ID参数将丢失.我尝试将SiteMapPreserveRouteData属性添加到操作方法,但它们似乎没有做任何事情.是否有一种简单的方法可以确保保留此ID信息?我认为SiteMapPreserveRouteDataAttribute应该这样做,所以我的属性有问题吗?我的方法看起来像这样:
[SiteMapPreserveRouteData]
public ActionResult User()
{
//code
}
Run Code Online (Sandbox Code Playgroud)
如果您需要我的更多信息,请告诉我.
我正在开发一个ASP.Net应用程序,我有一个Bootstrap navbar
设置如下:
Site.Master
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<asp:HyperLink runat="server" AccessKey="1" ToolTip="Go to Home Page" NavigateUrl="~/Home">
Home
</asp:HyperLink>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a runat="server" href="~/Page_1">Page 1</a>
</li>
<li>
<a runat="server" href="~/Page_2">Personal Details</a>
</li>
<li>
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Page 3 <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li><a runat="server" href="~/Page_3/Page_3A">Page 3A</a></li>
<li role="separator" class="divider"></li>
<li><a runat="server" href="~/Page_3/Page_3B">Page 3B</a></li>
<li><a …
Run Code Online (Sandbox Code Playgroud) 根据Google在视频站点地图中定义的内容,应该将一些xml标记添加到视频的站点地图中,它应该是这样的:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>http://www.example.com/videos/some_video_landing_page.html</loc>
<video:video>
<video:thumbnail_loc>http://www.example.com/thumbs/123.jpg</video:thumbnail_loc>
<video:title>Grilling steaks for summer</video:title>
<video:description>Alkis shows you how to get perfectly done steaks every
time</video:description>
<video:content_loc>http://www.example.com/video123.mp4</video:content_loc>
<video:player_loc autoplay="ap=1">
http://www.example.com/videoplayer.mp4?video=123</video:player_loc>
<video:duration>600</video:duration>
<video:expiration_date>2009-11-05T19:20:30+08:00</video:expiration_date>
<video:rating>4.2</video:rating>
<video:view_count>12345</video:view_count>
<video:publication_date>2007-11-05T19:20:30+08:00</video:publication_date>
<video:family_friendly>yes</video:family_friendly>
<video:restriction relationship="allow">IE GB US CA</video:restriction>
<video:gallery_loc title="Cooking Videos">http://cooking.example.com</video:gallery_loc>
<video:price currency="EUR">1.99</video:price>
<video:requires_subscription>yes</video:requires_subscription>
<video:uploader info="http://www.example.com/users/grillymcgrillerson">GrillyMcGrillerson
</video:uploader>
<video:live>no</video:live>
</video:video>
Run Code Online (Sandbox Code Playgroud)
我想知道如何动态地将这些自定义标签添加到我的sitemap.xml中?我正在使用mvcsitemapprovider
sitemapprovider google-sitemap mvcsitemapprovider asp.net-mvc-sitemap
我正在使用默认的Sitemap提供程序进行安全修整.但是,有些如何,我得到:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.
我认为站点地图提供商正在寻找错误位置的角色.我的配置是这样的:
<connectionStrings>
<add name="DB" ... />
</connectionStrings>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear/>
<add name="SqlProvider" .../>
</providers>
</membership>
<roleManager enabled="true">
<providers>
<add connectionStringName="DB" type="System.Web.Security.SqlRoleProvider" ... />
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
Sitemap标记的定义如下:
<siteMap defaultProvider="XmlSiteMapProvider" enabled="true" >
<providers>
<clear/>
<add name="XmlSiteMapProvider"
description="Default SiteMap provider."
type="System.Web.XmlSiteMapProvider "
siteMapFile="Web.sitemap"
securityTrimmingEnabled="true" />
</providers>
</siteMap>
Run Code Online (Sandbox Code Playgroud)
为什么我得到sql错误?修剪如何获得角色?
编辑:
我的页面文件夹层次结构是(它们都在同一个文件夹中):
Site.Master
Default.aspx
find_provider.aspx
provider.aspx
Run Code Online (Sandbox Code Playgroud)
我有一个Web.sitemap
页面设置:
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="~/Default.aspx" title="Home" description="Homepage">
<siteMapNode url="~/find_provider.aspx" title="Provider" description="Search for provider">
<siteMapNode url="~/provider.aspx" title="Profile" description="Shows each provider profile" />
</siteMapNode>
</siteMapNode>
</siteMap>
Run Code Online (Sandbox Code Playgroud)
我在我的 MasterPage 中调用:
<div id="navigation">
<ul>
<li><asp:HyperLink runat="server" ID="lnkHome" NavigateUrl="~/Default.aspx">Home</asp:HyperLink></li>
<asp:Repeater runat="server" ID="menu" DataSourceID="SiteMapDataSource1">
<ItemTemplate>
<li>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("Url") %>'><%# Eval("Title") %></asp:HyperLink>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" ShowStartingNode="false" />
</div>
Run Code Online (Sandbox Code Playgroud)
Default.aspx
我的登陆页面也是如此。用户可以单击find_provider.aspx
以搜索他们选择的提供商。对于每个提供商搜索结果,用户可以单击 PROFILE 链接查看每个提供商的信息,即provider.aspx
页面。
所以:
我最近开始使用marteenba的站点地图提供程序,因为我无法解决其他站点地图的路由问题.它比我以前的方式更好.我的问题是:如何从进入单个主页的页面创建不同的痕迹痕迹?考虑以下想法:
站点地图结构
<mvcSiteMapNode title="Home" controller="Home" action="Index" changeFrequency="Always" updatePriority="Normal">
<mvcSiteMapNode title="Clients Search" controller="ClientBussiness" action="ClientSearch" description="Clients Search">
<mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
</mvcSiteMapNode>
<mvcSiteMapNode title="Advanced Search" controller="ClientBussiness" action="AdvancedSearch" description="Clients Advanced Search">
<mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
</mvcSiteMapNode>
<mvcSiteMapNode title="Another Search" controller="ClientBussiness" action="AnotherSearch" description="Clients Another Search">
<mvcSiteMapNode title="Contract Analysis" controller="Contract" action="Index"/>
</mvcSiteMapNode>
</mvcSiteMapNode>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,我的痕迹痕迹始终显示节点"客户端搜索"而不是任何其他节点.我不知道是否应该为每种搜索创建不同的路由(我在上一个站点地图上做了这个,但不幸的是iis6不喜欢它).
我感谢您的帮助.
编辑
在论坛上搜索我发现了类似的问题.因此,请考虑以下结构:
Home >> Search >> Contracts
Home >> Another Search >> Contracts
Home >> Advanced Search >> Contracts
Home >> Web Service Search >> Extra …
Run Code Online (Sandbox Code Playgroud) asp.net ×3
c# ×2
breadcrumbs ×1
css ×1
navbar ×1
repeater ×1
roleprovider ×1
sitemap ×1
xml ×1