我想在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但所有这些似乎并不管用.
我有一个MVC路由,它让我在运行IIS的登台服务器上下地狱.我在本地运行Visual Studio 2010的开发服务器.
这是一个实际在我的开发箱上工作的示例网址:
Root/CPUBoards/Full+Size
Results
Server Error404 - File or directory not found.
The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.
Run Code Online (Sandbox Code Playgroud)
这是我看到的完整行为.
本地主机:
Root/CPUBoards/Full Size - Resolves
Root/CPUBoards/Full%20Size - Resolves
Root/CPUBoards/Full+Size - Resolves
Run Code Online (Sandbox Code Playgroud)
使用IIS 7.0临时服务器:
Root/CPUBoards/Full Size - Resolves
Root/CPUBoards/Full%20Size - Resolves
Root/CPUBoards/Full+Size - 404 Not Found Error.
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我需要使用编码版本有几个原因...不会浪费你的时间.
HttpUtility.UrlEncode("Full Size")返回带有加号的版本... Full + Size.这适用于我的开发箱,但不适用于登台服务器.我宁愿让它在服务器上工作,因为我已经测试了所有其他工作并在本地工作,但我不知道从哪里开始查看服务器配置以使其行为方式相同.
谢谢!
我需要RoutData通过ASP.NET MVC应用程序中的给定URL字符串来获取.
我找到了HttpContextBase基于URL字符串模拟的RouteTable.Routes.GetRouteData()方法,然后将其传递给Route Parsing(Uri to Route)线程中的方法.
如何使用URL字符串模拟HttpContextBase检索?RouteDataRouteTable.Routes.GetRouteData()
或者是否有另一种RouteData通过URL 检索的方法?
我使用最新版本的ASP.Net MVC 2 RC.
我的问题是,如何从"博客"区域中的一个操作重定向到我的应用程序"根"中存在的家庭控制器中的索引操作(无区域)?
我试过了:
return RedirectToAction("index", "home");
Run Code Online (Sandbox Code Playgroud)
但是这会重定向到/ Blog/home,其中Blog是我的区域的名称.
什么是在ASP.NET MVC的差异RedirectToRoute和RedirectToAction?目前尚不清楚我的区别.
我的第一篇文章......
当我使用RedirectToAction时,浏览器中的url不会更改.我怎样才能做到这一点?
使用Web表单10多年后,我正在切换到ASP.NET MVC 3.0(也使用jQuery Mobile).我大约需要8个星期的时间,经过几本书并且谷歌搜索答案之后,我才会干嘛.
我在Global.asax中定义了一个路由:
routes.MapRoute(
"Routes",
"{controller}/{action}/{id}",
new { controller = "Shopping", action = "Index", id = UrlParameter.Optional }
Run Code Online (Sandbox Code Playgroud)
我有一个包含以下操作的ShoppingController:
public ActionResult Cart() {...}
public ActionResult Products(string externalId) {...}
[HttpPost]
public ActionResult Products(List<ProductModel> productModels)
{
// do stuff
return RedirectToAction("Cart");
}
Run Code Online (Sandbox Code Playgroud)
当我进行get和post(带有RedirectToAction的帖子)时的url总是:
/Shopping/Products?ExternalId=GenAdmin
Run Code Online (Sandbox Code Playgroud)
在post和RedirectToAction之后,我希望浏览器中的url更改为:
/Shopping/Cart
Run Code Online (Sandbox Code Playgroud)
我尝试过Redirect和RedirectToRoute,但得到了相同的结果.
任何帮助将不胜感激.
[更新] 我发现jQuery Mobile AJAX帖子是这里的罪魁祸首.如果我关闭jQuery Mobile的AJAX就可以了.
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
// do not handle links via ajax by default
$(document).bind("mobileinit", function () { $.mobile.ajaxEnabled = false; });
</script>
<link rel="stylesheet" …Run Code Online (Sandbox Code Playgroud) 我的控制器中有以下代码,用于在用户注销后重定向我的用户:
public ActionResult Logout()
{
FormsAuthentication.SignOut();
return new RedirectToRouteResult(
new RouteValueDictionary(
new {
area = "Administration",
controller = "Menus",
action = "Home"
}
)
);
}
Run Code Online (Sandbox Code Playgroud)
我想将用户重定向到我网站的基本URL(根).有没有办法我可以做到这一点,而不必提供区域,控制器和行动的细节?
在我的一个控制器操作中,我正在生成一些XML.该XML中的一个属性是href另一个控制器和动作,带有一些参数.XML应如下所示:
<projects>
<project id="42" name="Project X", href="/projects/42"/>
<!-- etc. -->
</projects>
Run Code Online (Sandbox Code Playgroud)
我不介意URL是相对的还是绝对的,但我的问题是:如何以类型安全的方式在控制器代码中生成URL?
换句话说,我怎么HtmlHelper.ActionLink做,但从控制器?
我正在我的cshtml页面中动态生成URL.Url.RouteUrl()和Url.Action()有什么区别?
我应该使用哪一个来生成URL,两者在实现方面有什么区别?
提前致谢.
有没有办法实现调用URL http://mywebsite/myarea/mycontroller/myaction.xml
这基本上"假"请求文件,但结果将是一个动作操作,将服务于动态创建的文件?
我试过这个:
context.MapRoute(
"Xml_filename",
"Xml/{controller}/{action}.xml"
);
Run Code Online (Sandbox Code Playgroud)
但是只要URL中有filextension,路由就会失败并且表现就像我直接请求文件一样.
我怀疑这可能是因为使用扩展名更少的url处理程序.
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何建议.
的Jakub