从ASP.NET MVC项目中的Controller查找App_Data文件夹的绝对路径的正确方法是什么?我希望能够临时使用.xml文件,我不想硬编码路径.
这不起作用:
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
string path = VirtualPathUtility.ToAbsolute("~/App_Data/somedata.xml");
//.... do whatever
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我认为在Web上下文之外VirtualPathUtility.ToAbsolute()不起作用.字符串路径返回"C:\ App_Data\somedata.xml"
我应该在哪里确定MVC应用程序中.xml文件的路径?global.asax并坚持使用应用程序级变量?
我想在MVC中生成任何文件的完整Url(带域名等).示例:.jpg文件或exe文件.
示例:如果我提供"〜/ images/abc.jpg",则应返回" http://www.mywebsite.com/images/abc.jpg "
我知道Url.Action将协议作为参数的重载.但是Url.Action只能用于Actions.
我想要一些像Url.Content协议作为参数的功能.
你知道是否有任何方法来获取任何文件的完整URL?
我曾尝试:VirtualPathUtility.ToAbsolute,ResolveClientUrl,ResolveUrl但所有这些似乎并不管用.
@Url.Action根据我申请的属性路线,我无法解析我期望的网址:
我的动作(SearchController,但[RoutePrefix("add")])
[Route("{searchTerm}/page/{page?}", Name = "NamedSearch")]
[Route("~/add")]
public ActionResult Index(string searchTerm = "", int page = 1)
{
...
}
Run Code Online (Sandbox Code Playgroud)
致电Url.Action
@Url.Action("Index", new { controller = "Search", searchTerm = "replaceMe", page = 1 })
Run Code Online (Sandbox Code Playgroud)
这导致了一个网址
/add?searchTerm=replaceMe&page=1
我期待
/add/replaceMe/page/1
如果我手动输入网址,则会使用正确的参数解析为正确的操作.为什么不@Url.Action解析正确的网址?
asp.net-mvc routes url-routing asp.net-mvc-routing attributerouting