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”路由的项目。

我在这样的视图中调用它:

<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”路由之前的“Default”),它将永远不会调用最后一个路由(“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(...);
}

并将您的自定义路线放在 Default 之前

于 2012-12-20T10:45:14.090 回答