2012-02-03 4 views
2

Jqueryタブのプラグインを使用して、自分のビューにタブを表示しています。jQueryタブで使用すると、Html.ActionLinkのコントローラ名が正しく表示されない

私は<li><a href="../JobDetails/Index/1234">JobDetails</a></li>を私の最初のタブにします。

私は

<li>@Html.ActionLink("JobDetails", 
       "Index", // <-- ActionMethod 
       "JobDetails", // <-- Controller Name. 
        new { id = 1234 } 
       )</li> 

をしています。このため

しかし、私はソースは、このリンクコーディネーションが私のコントローラ名であると私は(コーディネーションコントローラとアクション名にこれらのタブを持っています

<li><a href="/Coordination?Length=10" id="1234">JobDetails</a></li> 

を見せ見ますViewName)はインデックスです。

私はなぜコントローラ名をCoordinationとして取得しているのかわかりませんが、JobDetailsという名前でもあります。

答えて

10

これは、間違ったオーバーロードされたメソッドを使用しているためです。あなたのオリジナルのオーバーロードされたメソッドがthisある

<li> 
    @Html.ActionLink 
    (
     "JobDetails", 
     "Index", // <-- ActionMethod 
     "JobDetails", // <-- Controller Name. 
     new { id = 1234 }, 
     null // pass a null value for the htmlAttributes object 
    ) 
    </li> 

:代わりにこれを試してみてください

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    Object routeValues, 
    Object htmlAttributes 
) 

あなたは上記のパラメータ名からもわかるように、あなたがそうで、あなたのリンクのテキストとして「JobDetails」に渡していると、そうです。そのため、レンダリングされたマークアップを取得しています。

しかしthisオーバーロードを使用することにより、あなたは自分の希望のマークアップを取得するhtmlAttributesオブジェクトに対してnullを渡す必要があります:ActionLinkのはかなりオーバーロードされ

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName, 
    Object routeValues, 
    Object htmlAttributes 
) 
+2

+1。正しいものを使用してください。http://msdn.microsoft.com/en-us/library/system.web.mvc.html.linkextensions.actionlink.aspx –

+1

「@Html」のこの特定のオーバーロードを使用すると見つかりました。 'htmlAttributes:null // htmlAttributesオブジェクトにnull値を渡してください'そうでなければ、正しくオーバーロードをソートすることができませんでした。 – atconway

関連する問題