0

イベントコントローラーがあるとしましょう。コントローラーには、出席者、写真、メッセージの3つのアクションがあります。

次のルートスキーマを実現するにはどうすればよいですか。

  1. www.site.com/event/ {eventname}
  2. www.site.com/event/{eventname}/action/
  3. www.site.com/event/ {eventname} / action / {actionid}

コントローラはEventControllerと呼ばれ、アクションは3つのアクション(出席者、写真、メッセージ)のいずれかになります。例えば

  • www.site.com/event/-すべてのイベントを一覧表示します
  • www.site.com/event/autiebirthday/-auntibirthdayイベントを表示します。このページには、写真、メッセージ、参加者のアクションを呼び出すためのリンクがあります。
  • www.site.com/event/autiebirthday/photos/-おばさんの誕生日イベントのすべての写真を一覧表示します。
  • www.site.com/event/autiebirthday/photos/1-コメントとともにID1の写真を表示します。

ありがとう。

ルウェンディ

4

2 に答える 2

2

ルートテーブル:

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

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

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

コントローラ:

public class EventController : Controller
{
    public ActionResult Index(string eventName)
    {
        ViewBag.EventName = eventName;

        return View();
    }

    public ActionResult Photos(int? id)
    {
        ViewBag.Id = id;

        return View();
    }
}

ViewBagルートが機能することをテストするために単に使用したことに注意してください。当然、本番環境には適切なデータソースを使用する必要があります。

于 2012-08-10T12:43:32.587 に答える
0

URLが何を呼び出すべきかは私にはわかりませんが、これでうまくいくと思います

routes.MapRoute("", "event/{eventname}", new { controller = "Event", action = "Messages" });
routes.MapRoute("", "event/{eventname}/action/{actionid}", new { controller = "Event", action = "Messages", actionId = UrlParameter.Optional });    
于 2012-08-10T12:14:56.360 に答える