2011-06-13 100 views
0

我一直在淘網上找到一種方法來做到這一點。在ASP.NET MVC 2控制器中生成超鏈接?

我想從我的控制器生成一個動作的超鏈接,並把它放在一個字符串中。我需要能夠定義標籤並給它html屬性。我可以得到Url.Action(...)工作,但該方法不讓我定義鏈接上的標籤。

HtmlHelper.GenerateLink(...)看起來很有前景,但我找不到任何有關如何使用它的具體示例。

的鏈接應該是這個樣子:

<a href="/Application/Form?action=view&id=11">View</a> 
+0

[創建在控制器.NET MVC一個URL]的可能重複(http://stackoverflow.com/questions/699782/creating-a -url-the-controller-net-mvc) – jfar 2011-06-13 19:42:33

回答

2

這個屬性添加到您的基本控制器:

protected HtmlHelper Html 
    { 
     get 
     { 
      var viewContext = new ViewContext(ControllerContext, new WebFormView(Request.CurrentExecutionFilePath), 
       new ViewDataDictionary(), new TempDataDictionary(), Response.Output) 
      { 
       RouteData = ControllerContext.RouteData 
      }; 

      return new HtmlHelper(viewContext, new ViewPage()); 
     } 
    } 

然後調用它從任何地方:

var link = Html.ActionLink("Click Me", "action"); 
-1

有幾個方法可以做到這一點 - 這裏是2:

<a href="@Url.Action("actionName", "controllerName")">Link name here</a> 

Html.ActionLink(article.Title, 
      "Login", // <-- Controller Name. 
      "Item", // <-- ActionMethod 
      new { id = "<arguments here" }, // <-- Route arguments. 
      null // <-- htmlArguments .. which are none. You need this value 
        //  otherwise you call the WRONG method ... 
        //  (refer to comments, below). 
      ) 

有每個可用

+1

這意味着什麼 - 你想重定向到一個特定的視圖(鏈接)在控制器中的某個條件? – stack72 2011-06-13 20:29:12

-2

的其他重載也許更多關於你爲什麼想要這樣做的信息會更有幫助。如果您返回一個包含HTML的字符串,它將默認爲HTML編碼並在客戶端上無用。如果你有一個自定義視圖,那麼爲什麼不使用@ Html.ActionLink建立鏈接呢?

我想我試圖找出控制器,而不是認爲這樣做的好處......

+0

該鏈接將被插入到頁面上顯示的成功消息中。該消息僅在控制器中指定時顯示。 – 2011-06-13 19:55:24

0

試試這個

string str = string.Concat("<a href=\"",ControllernameinVar,"/",ActionNameinVar,"?action=",view,"&id=",variable">View</a>" 

,然後通過在此的ViewData並調用它在視圖

<%= str%>