1

適度なサイズの ASP.NET Web フォーム サイトに取り組んでいます。内部リンクなどの URL は、通常、次のような構文を使用して設定されます。

<asp:HyperLink runat="server" NavigateUrl="~/Some/Path/MyPage.aspx" Text="Blah" />

これらのリンクは単なる文字列であるため、これは少し緊張します。ページの名前を変更したり移動したりすると、すべての参照を追跡するのに苦労するのではないかと心配しています.

実行時に実際のパスを決定する ASP.NET の方法はありますか? 私は次のようなものを想定しています:

NavigateUrl="<%= GetUrl(typeof(MyPage)) %>"
4

3 に答える 3

1

GetUrlフォルダー構造のロジックに従ってメソッドを定義できます。名前空間がフォルダー構造に対応していると仮定すると、基本的な定義は次のようになります。

public string GetUrl(System.Type CurrentType)
    {
      List<string> PathInNamespace = CurrentType.FullName.Split('.').ToList<string>();
      PathInNamespace.RemoveAt(0);
      return "/" + string.Join("/", PathInNamespace.ToArray());      
    }
于 2013-01-14T18:28:24.873 に答える
0

コード以外の解決策の1つは、カスタムエラーページを作成してWebサイトの他の部分にリンクするか、エラーページに検索ボックスを挿入することです。すばやく簡単で、SEOにも役立ちます。

于 2013-01-14T21:13:48.727 に答える
0

本当に欲しいのは、Umbraco、Sitecore、OpenText などの CMS です。

ただし、ID 列と Url 列を含むデータベースとテーブルを使用して、自分で何かを作成することはできます。次に、次のようにします。

NavigateUrl="<%= GetUrl("AwesomeLink") %>"

データベースにアクセスし、ID を検索して、リンクを入力します。また、再コンパイルせずにリンクを変更することもできます。

ある時点でどのリンクが必要かをまだ伝える必要があることを除いて、それはあなたのアイデアに似ています。それはあなたのために推測することはできません.

于 2013-01-14T17:56:36.293 に答える