0

ハイ

私はコードの下に書いていた

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.MapRoute(
            "Home", // Route name
            "", // URL with parameters
            new { controller = "Home", action = "Index" } // Parameter defaults
        );
        routes.MapRoute(
                   "Controller_Action", // Route name
                   "{controller}/{action}/{id}", // URL with parameters
                   new { id = UrlParameter.Optional } // Parameter defaults
        );
        foreach (var route in GetDefaultRoutes())
        {
            routes.Add(route);
        }
        routes.MapRoute(
            "UserPage", // Route name
            "{id}", // URL with parameters
            new { controller = "Home", action = "Get" } // Parameter defaults
        );
    }




    private static IEnumerable<Route> GetDefaultRoutes()
    {
        //My controllers assembly (can be get also by name)
        Assembly assembly = typeof(test1.Controllers.HomeController).Assembly;
        // get all the controllers that are public and not abstract
        var types = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(Controller)) && t.IsPublic && !t.IsAbstract);
        // run for each controller type
        foreach (var type in types)
        {

            //Get the controller name - each controller should end with the word Controller
            string controller = type.Name.Substring(0, type.Name.IndexOf("Controller"));
            // create the default
            RouteValueDictionary routeDictionary = new RouteValueDictionary
                                               {
                                                   {"controller", controller}, // the controller name
                                                   {"action", "index"} // the default method
                                               };
            yield return new Route(controller, routeDictionary, new MvcRouteHandler());
        }
    }

私は mvc を初めて使用します。URL を次のように書き換えたいと考えています。私の URL が www.myhouse.com/product/index/1 のようなものだとすると、より良い SEO のために www.myhouse.com/prduct-name のみを表示したいと考えています。パフォーマンス、私はmvc4ベータ版を使用しています.Net MVCでのURL書き換えも使用しましたが、うまくいきません....

しかし、このメソッドに値を渡す方法がわかりません。

4

1 に答える 1

2

インターネットでたくさん検索した後、私は解決策を得ました

以下のコードを追加global.asax

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

次に、以下のコードを追加して表示します。

@Html.ActionLink("test", "Content", new { jats= "test-test" })

以下のコードを に追加しますHomeController

public ActionResult Content(string jats)
{
    return View();
}

その後、完了しました...URLはクエリ文字列で渡すものと同じです...そのため、コントローラー名とクエリ文字列パラメーターは表示されません。

于 2012-07-14T19:23:15.360 に答える