Отображение URL-пути MVC через комбинацию Controller / Action / RouteValues - PullRequest
3 голосов
/ 01 июля 2011

У меня было сомнение, а именно:

Когда я использую следующий код:

@(Html.ActionLink("Click Me", "ACTION", new {QueryName = ViewBag.QueryName}))

Я получу вывод в формате HTML так: Click Me

Хорошо, но что, если я хочу получить следующее в качестве вывода HTML?

Мне нужна только часть href ссылки действия http://localhost/ControllerName/ACTION?QueryName=098, без тега "a"

Должен ли я написать для него расширение или у меня есть какое-то предварительное условие для этого?

Надеюсь, я был достаточно ясен.

Спасибо

ОБНОВЛЕНИЕ

Пока что я написал расширение, которое явно не лучший способ сделать это, как вы можете видеть ниже, но мне это нужно:

public static class ActionURLPathExtension
{
    public static MvcHtmlString ActionURLPath(this HtmlHelper helper ,  string ActionName, string ControllerName, object RouteValues)
    {
        string resultURL=LinkExtensions.ActionLink(helper," ",ActionName,ControllerName, RouteValues, new object()).ToHtmlString();
        resultURL= resultURL.Replace("</a>","") .Replace("<a href=\"","") .Replace("\">","").Trim() ;

        return MvcHtmlString.Create(helper.ViewContext.HttpContext.Server.UrlDecode(resultURL));
    }
}

В HTML я использовал это так:

<span>Now you can paste this URL in your address bar : @(Html.ActionURLPath("CarregarFiltros", "Filtros", new { QueryId = "%0" , noCache = new Random().Next(0,1989)  }))</span>

1 Ответ

4 голосов
/ 01 июля 2011

Вы можете использовать Url.Action, вот так:

@Url.Action("Action", new { QueryName = ViewBag.QueryName })

или если вам нужен полный URL:

@Url.Action("Action", "Controller", new { QueryName = ViewBag.QueryName }, "http")
...