2012-07-24 62 views
1

我很努力通過向其傳遞一個參數來將View中的動作調用到另一個View動作控制器。使用@ Html.actionlink - 調用另一個視圖的動作控制器

這是從視圖(我在索引視圖和呼叫的計費控制)呼叫:

@Html.ActionLink("parameters", "MyParameters", "Account", new { email = "test" }) 

我運行時編譯器說:「不能解析動作MyParameters「什麼錯呢?

這是我的賬戶控制器內的功能:

public ActionResult MyParameters(string email) {} 

這是我的路線:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", 
      "{controller}/{action}/{id}", 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Paramètres par défaut 
     ); 

    } 

乾杯

回答

4

嘗試:

@Html.ActionLink("parameters", "MyParameters", "Account", null, new { email = "test" }) 

超載是:

@Html.ActionLink("linkText", "actionName", "controller", object routeValues, object HtmlAttributes) 

routeValues是鏈接上添加一個查詢字符串。因此,舉例來說,如果你想添加的id = 1的鏈接,你的動作鏈接應該是這樣的:

@Html.ActionLink("parameters", "MyParameters", "Account", new { @id = 1 }, new { email = "test" }) 

這將產生如下:

<a href="Account/MyParameters?id=1" email="test">parameters</a> 

,如果你想電子郵件作爲查詢字符串,你需要這樣做:

@Html.ActionLink("parameters", "MyParameters", "Account", new { @id = 1, @email = "test" }, null) 

這將產生:

<a href="Account/MyParameters?id=1&email=test">parameters</a> 
+0

嗨,它沒有工作,我想調用的控制器名稱是'賬戶',它的操作名稱是'MyParameters','參數'是我的鏈接的名稱 – dtjmsy 2012-07-24 23:40:46

+0

我編輯了我的原始響應因爲它是錯誤的。這應該現在工作。 – jzm 2012-07-24 23:44:34

+0

嗨,就是這樣!我錯過了新的{@id = 1}!沒有更多的編譯錯誤我現在正在測試 – dtjmsy 2012-07-24 23:47:25

0

沒有ActionLink重載需要3個字符串和一個對象。 http://msdn.microsoft.com/en-us/library/dd505040

該代碼可能試圖將"Account"解釋爲routeValues和您的參數作爲htmlAttributes。我猜如果你看看實際輸出的鏈接,你會發現它看起來並不像你期望的那樣。

+0

嗨,我該怎麼辦?我試過@ Html.ActionLink(「參數」,「MyParameters」,新的{email =「test」}),可能是我需要改變路線中的東西? – dtjmsy 2012-07-24 23:06:58

0

嘗試:

@ Html.ActionLink( 「控制器」, 「行動」,新的{電子郵件= 「測試」, 參數= 「參數」})

您的控制器:

公衆的ActionResult MyParameters(字符串email,字符串參數){}

相關問題