2012-01-27 104 views
1

如何打開與鏈接的新窗口,以MVC之外,並採取在打開一些參數?操作鏈接MVC

@Html.ActionLink("SomeTextForLink", "wwww.google.com", null, new { querystring values}, new { target ="_blank"}) 

我想打開像www.abc.com/contact.aspx?id=22這是MVC頁之外

謝謝

回答

2

你可以寫一個自定義的幫手此:

public static class HtmlExtensions 
{ 
    public static IHtmlString Link(this HtmlHelper htmlHelper, string linkText, string baseUrl, object query, object htmlAttributes) 
    { 
     var anchor = new TagBuilder("a"); 
     anchor.SetInnerText(linkText); 
     foreach (var item in new RouteValueDictionary(htmlAttributes)) 
     { 
      anchor.Attributes[item.Key] = item.Value as string; 
     } 

     var urlBuilder = new UriBuilder(baseUrl); 
     var values = HttpUtility.ParseQueryString(string.Empty); 
     foreach (var item in new RouteValueDictionary(query)) 
     { 
      values[item.Key] = item.Value as string; 
     } 
     urlBuilder.Query = values.ToString(); 
     anchor.Attributes["href"] = urlBuilder.ToString(); 

     return new HtmlString(anchor.ToString()); 
    } 
} 

然後:

@Html.Link(
    "SomeTextForLink", 
    "http://www.google.com", 
    new { param1 = "value1", param2 = "value2" }, 
    new { target = "_blank" } 
) 
+0

非常感謝,通用的方式 – 2012-01-27 15:03:58

6

你不能使用ActionLink的爲。動作鏈接僅用於鏈接到應用程序中的動作。

可以使用通常的鏈接

<a href="@string.Format("http://www.abc.com/contact.aspx?{0}", yourQueryString)" target="_blank"> 
    Link Text 
</a> 
+0

偉大的答案。遵循我的黃金法則「在HTML中儘可能多的HTML」。 – Oybek 2012-01-27 11:12:38

+0

@Oybek謝謝! ;) – dknaack 2012-01-27 11:13:14

+0

謝謝你的工作很棒。 – 2012-01-27 15:04:43