ASP.NET MVC – 如何获得一个行动的完整path
在视图的内部,我可以得到一个完整的路线信息的行动?
如果我在控制器MyController中有一个名为DoThis的动作。 我可以到"/MyController/DoThis/"
的path吗?
你的意思是像在Url助手上使用Action方法:
<%= Url.Action("DoThis", "MyController") %>
或在剃刀:
@Url.Action("DoThis", "MyController")
这将给你一个相对的url( /MyController/DoThis
)。
如果你想得到一个绝对的URL( http://localhost:8385/MyController/DoThis
):
<%= Url.Action("DoThis", "MyController", null, Request.Url.Scheme, null) %>
几天前,我写了一篇关于该主题的博客文章(请参阅如何使用UrlHelper类构build绝对操作URL )。 正如达林·季米特洛夫所说: UrlHelper.Action
将生成绝对URL,如果protocol
参数是明确指定的。
不过,为了可读性,我build议编写一个自定义的扩展方法:
/// <summary> /// Generates a fully qualified URL to an action method by using /// the specified action name, controller name and route values. /// </summary> /// <param name="url">The URL helper.</param> /// <param name="actionName">The name of the action method.</param> /// <param name="controllerName">The name of the controller.</param> /// <param name="routeValues">The route values.</param> /// <returns>The absolute URL.</returns> public static string AbsoluteAction(this UrlHelper url, string actionName, string controllerName, object routeValues = null) { string scheme = url.RequestContext.HttpContext.Request.Url.Scheme; return url.Action(actionName, controllerName, routeValues, scheme); }
该方法可以这样调用: @Url.AbsoluteAction("SomeAction", "SomeController")
您可以使用Url.Action方法,您可以在其中传递控制器的名称和所需的操作,并为您生成适当的URL
Url.Action("MyController", "DoThis")
- MVC Html.BeginForm使用区域
- jquery ui datepicker和mvc查看模型types的date时间
- MVC4 Bundle中的{版本}通配符
- 在HtmlHelper的扩展方法中从传递的lambdaexpression式获取属性值的最简单方法是什么?
- 值不能为空。 参数名称:值,CreateIdentityAsync?
- Ajax调用后MVC3不显眼的validation工作
- 目录不存在。 参数名称:directoryVirtualPath
- 淘汰赛+ mvc 3 +validation
- 为什么DropDownListFor在提交之后会失去多重select,但是ListBoxFor却没有?