0

これは、私が以前に受けたいくつかの質問の続きです。UserController という名前のコントローラーを使用して、User と UserProfile の 2 種類のオブジェクトに対するアクションを処理します。他のアクションの中でも特に、これらのオブジェクトの両方に対して、および UserController 内で Edit アクションを定義したいと考えています。それらは別々のアクションである必要があり、コントローラーで EditUser および EditProfile と呼んでもかまいませんが、URL が次のようになっていることをお勧めします。

http://www.example.com/User/Edit/{userID}

http://www.example.com/User/Profile/Edit/{userProfileID}

同じコントローラー内にあるアクションの制限を考えると、これらのルートを達成する方法を知っている人はいますか?

コンテキストについては、以前の質問はここここにあります

ありがとう。

4

3 に答える 3

6

単なる提案ですが、正しいルートをマッピングするためにこのようなことを行うことはできませんか?

routes.MapRoute(
    "ProfileRoute", // Route name
    "User/Edit/{userProfileID}", // URL with parameters
    new { controller = "User", action = "EditUser" } // Parameter defaults
);

routes.MapRoute(
    "ProfileEditRouet", // Route name
    "User/Profile/Edit/{userProfileID}", // URL with parameters
    new { controller = "User", action = "Editprofile" } // Parameter defaults
);

編集:次に、コントローラーで、EditUser(guid userId) と Editprofile(guid userId) という 2 つの個別のメソッドを作成します。

于 2010-11-02T18:33:21.777 に答える
4

次のようなことを試すことができます: (未テスト)

routes.MapRoute(
    "EditUser",
    "User/Edit/{userID}", 
    new { controller = "User", action = "EditUser" });

routes.MapRoute(
    "EditProfile",
    "User/Profile/Edit/{userProfileID}",
    new { controller = "User", action = "EditProfile" });

編集:

MvcContrib ( http://mvccontrib.codeplex.com/から入手可能) を使用すると、構文が少し明確になります。

(using MvcContrib.Routing;)

MvcRoute
    .MappUrl("User/Edit/{userID}")
    .WithDefaults(new { controller = "User", action = "EditUser" })
    .AddWithName("EditUser", routes);

MvcRoute
    .MappUrl("User/Profile/Edit/{userProfileID}")
    .WithDefaults(new { controller = "User", action = "EditProfile" })
    .AddWithName("EditProfile", routes);
于 2010-11-02T18:31:47.310 に答える
1
using MvcContrib.Routing;

public class UserController : Controller
{
    [UrlRoute(Path = "User/Edit/{userID}")]
    public ActionResult UserEdit(int userID)
    { 

    }
}
于 2010-11-02T18:33:48.770 に答える