1

私は初めてですmvc。でテスト アプリケーションを作成していますmvc

ここで私はmvcURLで動作することを研究しました/[Controller]/[ActionName]/[Parameters]

しかし、私のアプリケーションでは、パラメーターを として渡す必要があります/home/index?name=test。として動作するはずだと思います/home/index/test。しかし、この方法ではうまくいきません。

ここActionMethodにあるhomeController

 public ActionResult Index(String name)
    {
        ViewBag.name = name;
        return View();
    }

宛先コードGlobal.asax.cs

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

インデックス.cshtml

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";

 }

  <h2>@ViewBag.name</h2>

なぜそれが/home/index/testフォーマットで機能しないのかを知るのを手伝ってくれる人はいますか。

ありがとう。

4

3 に答える 3

2

@Lars と @Joel が指摘するように、ルートはデフォルトのパラメーター名を ID として指定します。

宣言する

routes.MapRoute(
           "DefaultWithName", // Route name
           "{controller}/{action}/{name}", // URL with parameters
           new { controller = "Home", action = "Index", name = UrlParameter.Optional });

そして、ルート使用コードを使用するには

@Url.RouteUrl("DefaultWithName", new { name = "test" })

それ以外の@Url.Action

于 2013-04-22T05:33:32.190 に答える