ASP.NET MVC-What'从视图中创建Url到控制器操作的最佳方式



我需要找出从视图中创建控制器操作url的最佳方法。我遇到的问题是,当我将应用程序部署到具有和不具有虚拟应用程序根的不同机器时,url会略有变化。

因此,我希望能够动态地构造url,并且该方法需要知道应用程序是否在应用程序根目录中运行,或者它是否驻留在根目录中。

那么,我应该利用哪些助手/类来完成这项工作呢?

<%=ResolveUrl(string.Concat(Request.Url.Authority,Request.ApplicationPath) + "/Session/GetSessionFile/" + Model.SessionID + "/" + Model.FileName)%>

您应该使用Url.Action。您作为参数之一传递操作。然后是其他人的一系列路线值。我猜那些路由值键是什么(idfileName):

<%= Url.Action("GetSessionFile", new { id = Model.SessionId, fileName = Model.FileName })

您可以使用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}) %>

最新更新