Получить URL текущей страницы без параметров запроса - Razor Html helper?
есть ли метод в Razor, который возвращает текущий URL-адрес страниц без параметров запроса.
мне нужно засунуть его в вспомогательный метод HTML, который я создал в виде строки.
@Url
не работает и если я делаю .ToString()
Я просто получаю пространство имен LOLLL
использовать бритву:
<th width="100%" @Html.SortTableClickEvent(@Url.ToString(), "Name")>
вспомогательный метод HTML:
public static MvcHtmlString SortTableClickEvent(this HtmlHelper html, string url, string column)
{
StringBuilder sortingPropertiesObject = new StringBuilder();
sortingPropertiesObject.Append("var properties = new James.prototype.Table.SortingProperties();");
sortingPropertiesObject.Append("properties.url = "" + url + """);
sortingPropertiesObject.Append("properties.colName = "" + column + """);
string clickEvent = "onclick = James.Table.SortByColumn(properties, this);";
return MvcHtmlString.Create(sortingPropertiesObject + clickEvent);
}
что получает вывод в мой html:
<th width="100%" onclick='James.Table.SortByColumn("Name",' this);="" properties.colname="Name" james.prototype.table.sortingproperties();properties.url="System.Web.Mvc.UrlHelper" properties="new" var="">
Name
</th>
3 ответов
можно использовать Request.Url.GetLeftPart
способ для этого. Если Ваш URL-адрес говорит
http://the-site.com/controller/action?param=1
выполнения Request.Url.GetLeftPart(UriPartial.Path)
должны дать
http://the-site.com/controller/action
в коде это может выглядеть так:
<th width="100%" @Html.SortTableClickEvent(@Request.Url.GetLeftPart(UriPartial.Path), "Name")>
Это то, что я использовал, что также работает, чтобы избавиться от чего-либо права действия.
public static string GetParameterlessPath(ActionExecutingContext filterContext)
{
return GetParameterlessPath(filterContext.ActionDescriptor.ActionName,
VirtualPathUtility.ToAppRelative(filterContext.HttpContext.Request.Path));
}
public static string GetParameterlessPath(string action, string relativeUrl)
{
return relativeUrl.Contains(action)
? relativeUrl.Substring(0, relativeUrl.LastIndexOf(action))+action
: relativeUrl;
}
это, очевидно, статический метод, но я помещаю его в свой ActionFilter, следовательно, где я получаю ActionExecutingContext. Если у вас есть действие и relativeUrl (или любой url-адрес), Этот метод bottom должен работать для вас.