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?

下一篇: Silverlight IsolatedStorage PathTooLongException