我需要找出从视图中为控制器操作创建URL的最佳方法。我遇到的问题是当我将应用程序部署到具有和不具有虚拟应用程序根目录的不同计算机时,网址会稍有变化。
所以我希望能够动态构造url,并且该方法需要知道应用程序是否在应用程序根目录中运行,或者它是否位于根目录下。
那么我应该利用哪些帮助者/类来完成这项工作?
<%=ResolveUrl(string.Concat(Request.Url.Authority,Request.ApplicationPath) + "/Session/GetSessionFile/" + Model.SessionID + "/" + Model.FileName)%>
答案 0 :(得分:3)
您应该使用Url.Action
。您将操作作为参数之一传递。比其他人的一系列路线值。我猜这些路由值键是什么(id
和fileName
):
<%= Url.Action("GetSessionFile", new { id = Model.SessionId, fileName = Model.FileName })
答案 1 :(得分:2)
您可以使用Url.Action()
帮助:
<%=Url.Action("GetSessionFile", "Session") + '/' Model.SessionID + '/' + Model.FileName %>
更新:
我会尝试猜测你的路由配置。如果它包含以下声明:
routes.MapRoute("Session_Route", "{controller}/{action}/{sessionId}/{arg}");
你肯定应该以这种方式传递参数:
<%=Url.Action("GetSessionFile", "Session", new { sessionId = Model.SessionID, arg = Model.FileName}) %>