asp.net-mvc – MVC 3 Url Helper提供不正确的URL
发布时间:2020-12-16 00:00:16 所属栏目:asp.Net 来源:网络整理
导读:我正在为企业内部网站点开发MVC 3应用程序,并且我在URL助手方面遇到一些问题,有时候没有生成正确的URL.应用程序通过由我们的IT部门控制的访问管理器应用程序访问,该应用程序基本上提供标准化URL,以便用户不需要知道有关服务器的任何信息.例如,要直接在服务器
我正在为企业内部网站点开发MVC 3应用程序,并且我在URL助手方面遇到一些问题,有时候没有生成正确的URL.应用程序通过由我们的IT部门控制的访问管理器应用程序访问,该应用程序基本上提供标准化URL,以便用户不需要知道有关服务器的任何信息.例如,要直接在服务器上访问应用程序,我会访问:
http://philsserver/App 通过访问管理器,我将使用IT部门提供的URL: http://secureintranet/PHILSAPP/App/ 我在我的应用程序的几个地方使用MVC URL帮助器 – 问题是有时“PHILSAPP”部分被遗漏 – 当我在“< a>”中使用它时链接,它工作,但当我在其他地方使用它,它没有. 例如,代码: <a href="@Url.Action("Index","FormsAndTemplates")"> 正确创建链接为: < a href =“/ PHILSAPP / App / FormsAndTemplates”>. 以下代码: @Html.TextBox("lastName",ViewBag.LastName as string,new { @class = "input-mini",@autocomplete = Url.Action("QuickSearch","Employee") }) 生产: <input autocomplete="/App/Employee/QuickSearch" class="input-mini" id="lastName" name="lastName" type="text" value="" /> 请注意,此URL不包含“PHILSAPP”部分.如果我在javascript中使用URL帮助程序或者除了“< a>”以外的任何地方,也会发生这种情况.标签.有谁知道为什么会发生这种情况?据我所知,对Url.Action的两次调用几乎都是一样的,所以我无法弄清楚为什么会发生这种情况.如果这个问题已经得到解答,我很抱歉,但我无法找到有关类似问题的人的任何信息.在此先感谢您的任何帮助. 更新: routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default",// Route name "{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = UrlParameter.Optional }); 更新2:正在使用的访问管理器是Tivoli Identity Manager,如果它给任何人提供任何线索. 解决方法
正如nemesv上面指出的那样,答案是Url.Action方法始终生成URL为/ App / …但是访问管理器应用程序会识别某些标记(例如< a href =“/ App / .. .“>,< form action =”/ App /...“>等等)并将/ PHILSAPP添加到开头.我正在探索的解决方案是为UrlHelper和HtmlHelper编写一些扩展方法来生成绝对URL而不是相对URL,其中包含/ PHILSAPP的主机名将在web.config文件中指定.如果有人还有任何其他建议来解决这个问题,我会很高兴听到他们,但除此之外,我很满意使用它作为解决方法.
一些样板代码开头: namespace MvcApplicationNameSpace { /// <summary> /// Extension methods to the UrlHelper class for generating absolute URLs using /// Web.config settings /// </summary> public static class UrlHelperExtensions { private static string BaseUrl { get { return System.Configuration.ConfigurationManager.AppSettings["BaseUrl"]; } } /// <summary> /// Generates a string for the absolute URL to an action method /// </summary> /// <param name="url"></param> /// <returns></returns> public static string AbsoluteAction(this UrlHelper url) { return BaseUrl + url.Action(); } /// <summary> /// Generates a string for the absolute URL to an action method with the /// specified name /// </summary> /// <param name="url"></param> /// <param name="actionName"></param> /// <returns></returns> public static string AbsoluteAction(this UrlHelper url,string actionName) { return BaseUrl + url.Action(actionName); } /// <summary> /// Generates a string for the absolute URL to an action method with the /// specified name and route values /// </summary> /// <param name="url"></param> /// <param name="actionName"></param> /// <param name="routeValues"></param> /// <returns></returns> public static string AbsoluteAction(this UrlHelper url,string actionName,object routeValues) { return BaseUrl + url.Action(actionName,routeValues); } /// <summary> /// Generates a string for the absolute URL to an action method with the /// specified name and route values /// </summary> /// <param name="url"></param> /// <param name="actionName"></param> /// <param name="routeValues"></param> /// <returns></returns> public static string AbsoluteAction(this UrlHelper url,RouteValueDictionary routeValues) { return BaseUrl + url.Action(actionName,routeValues); } /// <summary> /// Generates a string for the absolute URL to an action method and /// controller /// </summary> /// <param name="url"></param> /// <param name="actionName"></param> /// <param name="controllerName"></param> /// <returns></returns> public static string AbsoluteAction(this UrlHelper url,string controllerName) { return BaseUrl + url.Action(actionName,controllerName); } /// <summary> /// Generates a string for the absolute URL to an action method and /// controller,including route values /// </summary> /// <param name="url"></param> /// <param name="actionName"></param> /// <param name="controllerName"></param> /// <param name="routeValues"></param> /// <returns></returns> public static string AbsoluteAction(this UrlHelper url,string controllerName,controllerName,routeValues); } /// <summary> /// Generates a string for the absolute URL to an action method and /// controller,routeValues); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 通过responseMode =“ExecuteURL”清除HttpCont
- asp.net – 如何使用多个项目部署单个解决方案?
- 最好的asp.net日历/日程安排组件?
- asp.net-mvc-3 – 当用户需要再次登录时,Ajax.ActionLink返
- asp.net-mvc-3 – 在asp.net MVC3.0中创建GridView
- asp.net MVC 权限设计(续)
- asp.net – Gridview编辑,点击两次问题
- asp.net – 如何打破VB.NET中的“if”块
- ASP.NET DataSource控件“没有命名容器”异常
- asp.net – IIS中的自定义虚拟路径提供程序
推荐文章
站长推荐
- Asp.Net WebApi接口返回值IHttpActionResult
- asp.net-mvc – VS2012 ProjectTypeGuids在安装A
- ASP.Net将文件下载到客户端浏览器
- asp.net-mvc – asp.net mvc并检查用户是否已登录
- asp.net-mvc – url.Action在ASP.NET MVC页面上的
- asp.net-mvc-3 – 如何使用MVC3中的存储库类进行
- 身份验证 – 在达到会话和身份验证票证超时值之前
- asp.net-identity – Web API 2和ASP Identity –
- asp.net – 在Internet Explorer 8中使用ScriptM
- Asp.Net Identity – 在运行时设置CookieDomain
热点阅读