动作链接mvc

时间:2012-01-27 11:04:42

标签: asp.net asp.net-mvc-3

如何打开一个新窗口,其中包含指向MVC OutSide的链接,并在打开时获取一些参数?

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

我想打开像www.abc.com/contact.aspx?id=22这样的东西,这不在MVC页面

谢谢

2 个答案:

答案 0 :(得分:6)

您不能使用Action Link。操作链接仅用于指向应用程序内的操作的链接。

您可以使用常用链接

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

答案 1 :(得分: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" }
)