2012-12-20 27 views
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> 

而且在我的控制器,這裏是方法的簽名: 公共JsonResult TranslateText(字符串stringToTranslate =「」,字符串inputLangCode =「 en「,string outputLangCode =」fr「)

我想知道是否有方法在同一視圖中調用它們,因爲如果我在」Default「之前放置」TranslateText「路徑,它只調用不帶參數的「TranslateText」方法並返回一個空的JSON。 如果我做的是相反的(「TranslateText」路由之前的「Default」),它將永遠不會調用最後一個路由(「TranslateText」)。

感謝

PS:我是新的MVC世界:)

回答

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(...); 
} 

和默認

之前把你的自定義路線
+0

它顯示了我的看法:「/ Translation/TranslateText?stringToTranslate =上傳%20你的%20CV%20(拖動%20%26%20Drop)&from = en&to = de」而不是翻譯......最奇怪的事情在調試時,它不會傳遞「TranslateText」方法,而如果我把「TranslateText」路由放在「Default」之前,它會調試... – user1841787

+0

請看編輯 – Dima

+0

它也不會工作...但是,如果我先將默認路線設置爲「@(Html.Action(」TranslateText「,」Translation「,new {stringToTranslate =」上傳您的簡歷(拖放)「,從=」en「 =「de」}))「而不是」@(Url.Action(「TranslateText」,「Translation」,new {stringToTranslate =「上傳您的簡歷(拖放)」,從=「en」,到=「de 「}))」它起作用,它給了我翻譯,但它使我呈現HTML標記格式的完整頁面,而不是圖形,我該如何糾正這個問題? – user1841787

相關問題