MVC3:从HtmlHelper对象获取视图路径的最佳方式是什么?
我有一个html扩展方法来检索位于与视图相同的文件夹中的文件的URL。
例
/Views/Home/Index.cshtml
/Views/Home/Index.js
/Views/Home/Index.css
这是做这件事的最好方法吗? 我不喜欢它,因为我必须做下面的演员。 我相信,如果您使用的是不同的视图引擎,RazorView将无法工作,但IView只有Render方法。
((RazorView)helper.ViewContext.View).ViewPath
这是完整的方法
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;
}
如果你使用Razor view engine
,你可以使用这个:
((System.Web.Mvc.RazorView)htmlHelper.ViewContext.View).ViewPath
祝你好运
我正在使用这样的东西:
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);
}
在那里有一个转换到WebViewPage,但我认为(纠正我,如果我错了),它会工作,无论你使用Razor或Webforms视图引擎。
您可以使用以下方法获取当前URL:如何在MVC 3中获取当前页面URL。然后从那里解析URL。
HTH。
链接地址: http://www.djcxy.com/p/54395.html上一篇: MVC3: What is the best way to get the view path from an HtmlHelper object?