パンくずリストのナビゲーションに関する問題があります。 私のアプリケーションでは、次のモジュール(control1.ascx、control2.ascx、...)のナビゲーションメニューをビルドするStart.aspxがあります。このモジュールは、クリック後にロードする必要があります。 このascxには、スタートページに他のascxをロードするためのデータ行とリンクボタンが付いたグリッドが含まれています これはアプリケーションの一般的な動作です。ASP.NETの動的ブレッドクラム
今私は多分、私たちはこのようにそれをviaualizeできるブレッドクラム にロードされたASCX視覚化する必要があります。
Start.aspx - 今> control1_1.ascx
アプリを - > control1.ascx "control1.ascx"をクリックすると、このコントロールを再度ロードするか、Start.aspxを選択すると、 "Home"が読み込まれます。
protected override void Render(HtmlTextWriter output)
{
NavigationDataTable moduleNameList = new NavigationDataTable();
List<usp_GetNavigationElements_Result> ModuleList = moduleNameList.GetModulesList(1, LoggedInUser);
StringBuilder sbResult1 = new StringBuilder();
//string sbResult;
if (Page.Items["title"] != null)
{
string id = Page.Items["title"].ToString();
PageTitle = Page.Items["title"].ToString();
}
//------------------------------------------------------------------------------------------
var request = HttpContext.Current.Request;
System.Collections.Specialized.NameValueCollection coll;
// Load ServerVariable collection into NameValueCollection object.
coll = request.ServerVariables;
string serverName = request.ServerVariables["SERVER_NAME"];
//------------------------------------------------------------------------------------------
string strDomain = "";
if (serverName == "localhost")
{
//Lokal
strDomain = "localhost:49573";
}
else
{
//Intranet
strDomain = "i";
}
string strURL = "/Start.aspx";
string strDirs = "control1.ascx";
Separator3 = new Image();
Separator3.Height = 52;
Separator3.Width = 52;
ArrowSeparator = new Image();
ArrowSeparator.ImageUrl = "/img/mb_arrow_separator.png";
HomeSymbol = new Image();
HomeSymbol.ImageUrl = "/img/mb_home.png";
// Home-Navigation for Start
sbResult1.Append("<img src='" + HomeSymbol.ImageUrl + "'>");
sbResult1.Append("<a href='http://" + strDomain + "/modules" + strURL + "'style='text-decoration:none;'>" + RootName + " " + "</a>");
sbResult1.Append("<img src='" + ArrowSeparator.ImageUrl + "' hspace='10'>");
//-------------------------------------------------------------------------------------------------------------------------------
foreach (var item in ModuleList)
{
if (HttpContext.Current.Session["ModuleTitle"] != null)
{
if (item.ModuleTitle == HttpContext.Current.Session["ModuleTitle"].ToString())
{
//sbResult1.Append("<a href='http://" + strDomain + "/modules" + strURL + "?" + item.ModuleName + "'>" + item.ModuleTitle + "</a>" + Separator);
Separator3.ImageUrl = "/img/" + HttpContext.Current.Session["ModuleTitle"].ToString() + ".png";
sbResult1.Append("<img src='" + Separator3.ImageUrl + " 'hspace='10'>");
sbResult1.Append(HttpContext.Current.Session["ModuleTitle"]).ToString();
}
}
}
if (!ModuleList.Contains(HttpContext.Current.Session["ModuleTitle"]))
{
if (HttpContext.Current.Session["ModuleTitle"] != null)
{
if (HttpContext.Current.Session["ModuleTitle"].ToString().Contains("_"))//|| HttpContext.Current.Session["ModuleSubTitle"] != null)
{
string[] std = HttpContext.Current.Session["ModuleTitle"].ToString().Split('_');
Separator3.ImageUrl = "/img/" + std[0] + ".png";
sbResult1.Append("<img src='" + Separator3.ImageUrl + "' hspace='10'>");
sbResult1.Append("<a href='http://" + strDomain + "/modules" + strURL + "?" + std[0] + "'style='text-decoration:none;'>" + std[0] + " " + "</a>");
sbResult1.Append("<img src='" + ArrowSeparator.ImageUrl + "' hspace='10'>");
sbResult1.Append("<img src='/img/Prozess.png' hspace='10'>");
sbResult1.Append(std[1]);
}
}
}
//-------------------------------------------------------------------------------------------------------------------------------
output.Write(sbResult1.ToString());
}
私は(このBreadcrumb.csを作るとレンダーオーバーライドする必要があり)、またはより良い方法があります。
挨拶DarkGecko