我有一个问题:
我想知道是否有办法在不同路径的视图中调用多个控制器的方法,我将解释:
我想使用“默认”路线和我创建的新路线:
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”路由放在“Default”路径之前,它只调用没有参数的“TranslateText”方法并返回一个空的JSON。 如果我正在做相反的事情(“TranslateText”路线之前的“默认”),它将永远不会调用最后一条路线(“TranslateText”)。
由于
P.S:我是MVC世界的新手:)
答案 0 :(得分: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(...);
}
将您的自定义路线放在默认
之前