Is there a method in Razor that returns the current pages URL without the query parameters.
I need to shove it into an HTML helper method I have created as a string.
@Url
does not seem to work and if I do .ToString()
I just get the namespace LOLLL
Razor use:
<th width="100%" @Html.SortTableClickEvent(@Url.ToString(), "Name")>
Html helper:
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);
}
What gets output to my 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>
Without querystring:
With querystring
This is what I used which also works to get rid of ANYTHING the right of the action.
This is obviously a static method, but I put it in my ActionFilter hence where I am getting the ActionExecutingContext. If you have the action and the relativeUrl (or any url for that matter) that bottom method should work for you.
You can use
Request.Url.GetLeftPart
method for that. If your URL is sayexecuting
Request.Url.GetLeftPart(UriPartial.Path)
should giveIn code that might look like this: