質問

私のMVCフレームワークのHtmlを作成するクラスのUrl:

Html.ActionLink("About us", "about", "home");

が組み込まれていません。に含まれるUrlケ?

まだ見つかり良い資源の発生Urlケ.

例えば、私の生成経路のように:

Route r = new Route("{country}/{lang}/articles/{id}/{title}",
                  new ArticleRouteHandler("~/Forms/Article.aspx"));
Route r2 = new Route("{country}/{lang}/articles/",
                  new ArticleRouteHandler("~/Forms/ArticlesList.aspx"));

Routes.Add(r);
Routes.Add(r2);

方法を教えてください出のUrlのルーティングテーブルデータです。

方法をURLに基づく自んでしまったのです。

例えば./ca/ja/articles/123/記事タイトルなし

役に立ちましたか?

解決

として考えて行動するよASP.NET MVCは、セットのヘルパーの方法"の"逆引き"のRouteTableをパーマネントURL(スマートします。私は行われていませんでこなしたことがきに必要なものGetVirtualPath法RouteCollection(そのRouteTable.路).そのようなもの:

Dim routedurl = RouteTable.Routes.GetVirtualPath(context, rvd).VirtualPath

渡す必要がありましRequestContext、RouteValueDictionary.のRouteValueDictionaryのルートパラメータ(なお場合のようなもの郡="英国"、lang="EN-GB"など。トリッキーは、RequestContextであることから通常のHttpContext.できる最後までしっかりと押し込みましHttpContextおIRouteHandler:

requestContext.HttpContext.Items("RequestContext") = requestContext

その後の復旧もおIHttpHandler(aspxページ)が必要です:

Dim rvd = 
  New RouteValueDictionary(New With {.country = "UK", .lang = "EN-GB"})
Dim routedurl = 
  RouteTable.Routes.GetVirtualPath(context.Items("RequestContext"), rvd).VirtualPath

謝罪への対応にC#の問題VBものASP.NET ルーティングサイトがあったのを手にしたVB.NET.

他のヒント

の答えなのです。ることに、こんどろ風mikiモデルを作ってみを行います。

グローバル.asax

RouteValueDictionary rvdSiteDefaults 
    = new RouteValueDictionary { { "country", "ca" }, { "lang", "en" } };

Route oneArticle 
    = new Route("{country}/{lang}/articles/a{id}/{title}",
        rvdSiteDefaults,
        rvdConstrainID,
        new ArticleRouteHandler("~/Articles/Details.aspx"));

Routes.Add( "Article", oneArticle);       

Urlを作成条からオブジェクト

public static string CreateUrl(Article a) {
    // Note, Article comes from Database, has properties of ArticleID, Title, etc.
    RouteValueDictionary parameters;

    string routeName = "Article"; // Set in Global.asax

    parameters 
      = new RouteValueDictionary { 
         { "id", a.ArticleID }, 
         { "title", a.Title.CleanUrl() } 
        }; 

CleanUrl() を返しますURLに優しい名前.

    VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, routeName, parameters);

    string url = vpd.VirtualPath; 
    return url; // eg. /ca/en/1/The-Article-Title
}

多田!

ハイパーリンクhl=newハイパーリンク();hl.Text="こちら";hl.NavigateUrl="~/形状/た。aspx";MostlyAnyControl.制御できます。Add(hl);

として記載しておくことは、リスト...それは、(1)ループに対して繰り返し処理を実行、または(2)Linqる形式をサポートしています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top