0

他の誰かがこの問題を抱えていましたか?私は何か間違ったことをしなければなりません。

だから私はこのようなエラーのルートを設定しています:

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { error = "" }
);

そして、次のように呼び出します:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));

そしてコントローラー上で:

public ActionResult Error(String error)

簡単でしょ?これを実際に実行すると、URLが次のようになっているにもかかわらず、エラーはnullになります。

/ Shared / Error / ThisIsTheError

ただし、Errorメソッドのエラーパラメータはnullです。(そして、はい、私は他の言葉を試しました)

これをすべて「id」という単語に置き換えると、すべてが機能します。

Global.asax.cs

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{id}",
 new { id = "" }
);

リダイレクト:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));

共有コントローラー:

public ActionResult Error(String id)

値を取り込むデフォルトルートがある場合、idはすべてのルートの単語である必要がありますか?

4

1 に答える 1

5

コントローラとアクションパラメータを常に指定する必要があります。

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { controller = "Shared", action="Error", error = "" }
);

idを使用する理由は、デフォルトルートがまだ登録されているためだと思います。このルートには、パラメーターとしてidがあり、コントローラーとアクションのデフォルト値があります。

デフォルトルートがまだある場合は、その前にルートを追加してください。そうしないと、最初に他のルートと一致します。

于 2009-06-16T23:03:28.137 に答える