سؤال

لدي الكود التالي:

public class NavigationPath
{
    private string menuItems = "<li>" +
                                    "<a href=\"#\">home</a>" +
                               "</li>";

ولكن أود الحصول على:

public class NavigationPath
{
    private string menuItems = "<li>" +
                                    "<a href=\"" + ResolveClientUrl("~/home.aspx") + "\">re</a>" +
                               "</li>";

ومع ذلك، لم أتمكن من استخدام Desolveclienturl داخل الفصل. أيه أفكار؟

هل كانت مفيدة؟

المحلول

desolveclienturl هو عضو في فئة SYSTEM.WEB.UI.Control، وبالتالي يمكن الوصول إليه مباشرة كما هو:

var url = ResolveClientUrl("~/Some/Url/");

عند الاتصال ضمن رمز صفحة ASP.NET الخاصة بك.

لاستخدامها داخل الفصل الذي سيتعين عليك نقل الصفحة (أو عنصر تحكم على الصفحة) في الفصل في منشئه. حتى بعد ذلك أنا لست متأكدا من أنك ستتمكن من استخدامه بالطريقة التي تشير إليها. من المحتمل أنك يجب أن تفعل شيئا مشابها ل:

public class NavigationPath
{
  private string menuItems = string.Empty;

  public NavigationPath(Page page)
  {
    menuItems = "<li>" + "<a href=\"" + page.ResolveClientUrl("~/Home.aspx") + "\">home</a>" + "</li>";
  }
}

ثم داخل صفحة ASP.NET الخاصة بك تفعل شيئا مثل:

var navPath = new NavigationPage(this);

نصائح أخرى

بدلا من الاتصال ResolveClientUrl على كائن الصفحة (أو أي عناصر تحكم)، يمكنك أيضا استخدام VirtualPathUtility.ToAbsolute("~/home.aspx"); والتي سوف تعطيك نفس النتيجة كدعوة ResolveUrl("~/home.aspx");

قديم قليلا ولكن قد يساعد شخص ما. استخدام :

using System.Web.UI;

و في الرمز:

new Control().ResolveClientUrl("Path");

عملت بالنسبة لي، أستخدم تطبيق الويب وليس حل موقع الويب، على الرغم من.

يعتبر

وجدت virtualpathutility.toabsolute. للعمل بشكل جيد للغاية لغرضي.

عملت تماما:

protected void build_Menu() 
{

    StringBuilder sb = new StringBuilder();

    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/Default.aspx'>Home</a></li>"));
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/CARS/Default.aspx'>Cars</a></li>"));
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/AIRPLANES/Default.aspx'>Airplanes</a></li>"));
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/MOTORCYCLES/Default.aspx'>Motorcycles</a></li>"));
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/REPORTS/Default.aspx'>Reports</a></li>"));
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/MANUALS/Default.aspx'>Manuals</a> </li>"));
    sb.Append("<li><a href='" + VirtualPathUtility.ToAbsolute("~/ADMINISTRATION/Default.aspx'>Administration</a></li>"));


    MENUfromCodeBehind.Text = sb.ToString();

}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top