1

そのため、MVCルーティングに関するチュートリアルや本を読み、プロジェクトで遊んだり、MVCルーティングを使用して目的を達成する方法をかなりしっかりと理解したりしました。

しかし、私はまだ完全に理解できない何かに反対しています。

私が達成したいのは、「http://mysite.com/client/1」のように見えない各クライアントの一意のURLです。このURLは、ブラウザをクライアントコントローラ、インデックスアクション、ClientId =1...に移動します。

私がやりたいのは、「http://mysite.com/Acme」のようなURLを使用して、データベースを検索し、「Acme」という一意の名前を持つクライアントを特定して、リクエストをにリダイレクトすることです。クライアントコントローラー、インデックスビュー、およびClientIdを「Acme」という名前のクライアント上にあるものに設定します。

デフォルトルートはそれをキャッチし続け、それを処理することはできません。

何か案は?

4

2 に答える 2

1

これを実現するには、グローバルアクションフィルターを使用することをお勧めします。または、ルックアップコントローラーにルーティングする静的パスを使用してルートを作成できます(たとえば、/ lookup / {companyname}はデータベースルックアップコントローラーにルーティングします)。

于 2012-12-27T21:19:21.590 に答える
1

「http://www.mysite.com/Clients/{ClientName}」はどうですか

routes.MapRoute(null, "Clients/{ClientName}", new{controller = "Clients", action = "Index"};

public class ClientsController : Controller
{
    public ActionResult Index(string clientName)
    {
        var id = Db.GetClientIdBy(clientName);

        // do your redirect...
    }
}    

それとも私は要点を逃しましたか?

于 2012-12-27T21:20:18.843 に答える