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;
}
If you use Razor view engine
, You can use this:
((System.Web.Mvc.RazorView)htmlHelper.ViewContext.View).ViewPath
Good luck
I'm using something like this:
public static string GetUrl(this HtmlHelper html, string filename)
{
var viewPath = ((WebViewPage)html.ViewDataContainer).VirtualPath;
var viewFolder = viewPath.Substring(0, viewPath.LastIndexOf("/") + 1);
var virtualScriptPath = viewFolder + filename;
var urlHelper = new UrlHelper(html.ViewContext.RequestContext);
return urlHelper.Content(virtualScriptPath);
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With