アプリ
CoId が指定されている場合は特定の会社のクライアントのリストを保持するビューがあり、それ以外の場合は、登録されているすべてのクライアントがリストに表示されます。HanlderId は、誰がクライアントを処理しているかを表すだけです。リストはページ化され (つまり page パラメーター)、並べ替えられます。したがって、次のコードで sortField と sortDir を使用します。ルートを除いて、すべてが機能します。そう...
設定
次のルートのエリア登録ファイルがあります。
context.MapRoute(
"Companies_Clients",
"Companies/Clients/Page/{page}/{sortField}/{sortDir}/{HandlerId}/{CoId}",
new
{
controller = "MyController",
action = "Index",
CoId = -1,
HandlerId = -1,
page = 1,
sortField = "ClaimId",
sortDir = "ASC",
AccidentDate = UrlParameter.Optional,
DateOfBirth = UrlParameter.Optional,
ClientSurname = UrlParameter.Optional,
InvoiceNumber = UrlParameter.Optional
}
);
デフォルトで UrlParameter.Optional に設定されているパラメーターは検索パラメーターです (リストも検索できます)。
次のように定義された MyController にアクションがあります。
public virtual ActionResult Index(
Nullable<int> FeId = -1,
Nullable<DateTime> AccidentDate = null,
Nullable<DateTime> DateOfBirth = null,
string ClientSurname = null,
Nullable<int> InvoiceNumber = null,
int page = 1, string sortField = "ClaimId", string sortDir = "DESC", int SolicitorId = -1)
{
var model = service.BuildModel(FeId, AccidentDate, DateOfBirth, ClientSurname, InvoiceNumber, page, sortField, sortDir, SolId);
return View("Index", model);
}
Index へのすべての呼び出しが「Companies_Clients」ルートと一致するようにします。
問題
@Html.ActionLink ヘルパー呼び出し (次のコード ブロックを参照) からの結果の URL は、「Companies_Clients」ルートと一致しません。
//This creates a link with a url that matches the default route (the usual one)
@Html.ActionLink("Sort by Client Name", MVC.MyArea.MyController.Index(feId, accidentDate, dateOfBirth, clientSurname, invoiceNumber, currentPage, "ClientSurname", "DESC"))
ルートと一致するのは、私の mvcSiteMap ノードです。
<mvcSiteMapNode title="Clients" area="Companies" controller="MyController" action="Index" key="clients">
つまり、この mvcsitemap ノードが生成するルートは次のとおりです。
/Companies/Clients/Page
質問
些細な質問は次のとおりです。
私は何を間違っていますか?? Html.ActionLink 呼び出しがルートと一致しないのはなぜですか??
他の質問は次のとおりです。
mvcsitemapnode によって生成されたルートに既定のパラメーターが表示されないのはなぜですか?