0

質問があります:

ビューで複数のコントローラーのメソッドを異なるルートから呼び出す方法があるかどうかを知りたいのですが、説明します:

「デフォルト」ルートと作成した新しいルートを使用したい:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Index", action = "Index", id = UrlParameter.Optional }
        );

        routes.MapRoute(
            name: "TranslateText",
            url: "{controller}/{action}/{stringToTranslate}/{from}/{to}",
            defaults: new { controller = "Translation", action = "TranslateText", stringToTranslate = "", from = "", to = "" }
        );

デフォルト ルートを使用しているビューに複数のアイテムがありますが、「TranslateText」ルートを使用しているアイテムが 1 つあります。

私はそのようなビューでそれを呼び出しています:

<legend id="UploadCVLabel" style="color: #FF6600;">@(Url.Action("TranslateText", "Translation", "Upload your CV (Drag & Drop)", "en", "de" }; ))
                    </legend>

そして、私のコントローラーでは、メソッドの署名は次のとおりです: public JsonResult TranslateText(string stringToTranslate = "", string inputLangCode = "en", string outputLangCode = "fr")

同じビューで両方を呼び出す方法があるかどうかを知りたいのですが、「デフォルト」ルートの前に「TranslateText」ルートを配置すると、パラメーターなしで「TranslateText」メソッドのみが呼び出され、空の JSON。反対のことをしている場合 (「TranslateText」ルートの前に「デフォルト」)、最後のルート (「TranslateText」) を呼び出すことはありません。

ありがとう

PS:私はMVCの世界では初めてです:)

4

1 に答える 1

1

Url.Action()構文にエラーがあります。次を使用してください。

@(Url.Action("TranslateText", "Translation", new {stringToTranslate = "Upload your CV (Drag & Drop)", from = "en", to = "de" } ))

メソッドシグネチャを次のように変更します。

public ActionResult TranslateText(string stringToTranslate = "", string from = "en", string to = "fr")
{
  ...
  return View(...);
}

そして、デフォルトの前にカスタムルートを置きます

于 2012-12-20T10:45:14.090 に答える