0

最初の MVC4 プロジェクトで、バッファにヒットしました...

このように自分のサイトページを参照できるようにしたいです。

メニュー/サブメニュー/ドキュメント/ID

ここで、ID 値はオプションであり、最後にタグ付けされた他のものはすべて、モデルはドキュメント部分をテキストとして処理します。

HOME/WELCOME/当店へようこそ

だから私はルートを設定しました(ルートは1つしかありません)

routes.MapRoute(
    name: "Default",
    url: "{menu}/{submenu}/{document}/{id}",
    defaults: new {
        controller = "Page", 
        action= "Data", 
        menu = "",
        submenu = "",
        document = "", 
        id = ""}

私はコントローラーを持っています。

public class PageController : Controller
{

    // Default view option for documents


    public ActionResult Data(string menu, string submenu, string document, string parameters)
    {


        // Set the View to use rather than it default;
        string thisView = "Data";

        return View(thisView);
    }

}

_MenuPartial.cshtml ファイルを参照する _Layout.cshtml ファイルがあります。

@model MyNameSpace.Models.PageModel
<ul>
    @foreach (var item in Model.Menus.MainMenu)
    {
        <li>@Html.ActionLink(item.Label, "Page", "Data", new
           {
               menu = "MENU",
               submenu = "SUBMENU"
           },
           null
           )
        </li>
    }
</ul>

上記はすべて、メインメニューを正しいテキストなどで動的に書き出します。

ただし、ラベルをクリックすると、ルートは PageControllers Data 関数に問題なくマップされているように見えますが、文字列メニュー、文字列サブメニュー、文字列ドキュメント、文字列パラメーターの値は "" または null です。

URL を変更すると、正しく渡されます。

これは私が何をすべきかの単なる誤解だと確信しています。誰か親切な魂がそれを見つけたら、私は離れて走り出すことを願っています!

ありがとうアンディ

4

1 に答える 1

2

ドキュメントと ID のデフォルト値UrlParameter.Optionalをルートで指定し、アクションのドキュメントと ID パラメータにデフォルト値 "" ( string document = "") を指定してみてください。これにより、ルーティングがアクション リンク ルート データとルートを調整できるようになります。

于 2013-04-03T09:00:52.687 に答える