I have an html extension method to retrieve the URL for a file that is located in the same folder as the view.
Example
/Views/Home/Index.cshtml
/Views/Home/Index.js
/Views/Home/Index.css
Is this the best way to do this? I don't like it because I have to do the following cast. I am sure that RazorView is not going to work if you are using a different view engine, but IView only has a Render method on it.
((RazorView)helper.ViewContext.View).ViewPath
Here is the full method
public static string GetUrl(this System.Web.Mvc.HtmlHelper helper, string fileName) {
string virtualPath = ((RazorView) helper.ViewContext.View).ViewPath;
virtualPath = virtualPath.Substring(0, virtualPath.LastIndexOf("/") + 1);
return virtualPath + fileName;
}
I'm using something like this:
There is a cast to WebViewPage there, but I think (correct me if I'm wrong) that it will work regardless of whether you are using Razor or Webforms view engine.
You can get the current URL using this: How to get current page URL in MVC 3. And then parse the URL from there.
HTH.
If you use
Razor view engine
, You can use this:Good luck