0

次の形式の URL で iModelBinder を使用すると問題が発生します

http://localhost/controller/action/id/value

アクションは、ID /値がつまり、コントローラー内の関数になります。ID=12

上記のリンクを試すと、見つからない 404 エラー ページが表示され、スタックを見ると、MVC が理解できないパスを探していることがわかります。

以下の作品を使用

http://localhost/controller/action?id=値

この問題を解決できるかどうか誰かが考えている場合は、区切り記号として「/」を使用できるようにしたいと思います。

ヴィンス

4

1 に答える 1

1

URLは実際には次の形式である必要があります。

http://localhost/controller/action/id

例えば:

http://localhost/products/index/1

そして、idはコントローラーアクションで指定する必要があります。例えば:

public ActionResult Index(int id)
{
    ...

global.asaxファイルで指定されたルートは、URLの形式を指定します。上記のURLの場合、デフォルトルートで十分です。

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

次に、デフォルトのモデルバインダーが自動的にID(つまり、上記のURLの1)をアクションのintIDにバインドします。

Adamが提案したように、デフォルトのモデルバインダーによって自動的にバインドされるため、URLでIDの名前を指定する必要はないと思います。

于 2012-02-09T07:14:59.767 に答える