Web Api中的Html.BeginForm - 路由

时间:2012-12-28 21:16:20

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api-routing

我有一个Web API项目作为我的解决方案的一部分(也包含一个MVC4项目),在Api项目中,我试图将一个表单发布到Values控制器Post方法(也在Api项目中的视图中)。

Html.BeginForm()Html.BeginForm("Post", "Values")个帖子用于/Values/Post,但我需要转到/api/Values/Post

我想知道哪些重载或设置要发布到正确的位置?

我可以从fiddler中获取所有操作方法(例如localhost / api / values)。

2 个答案:

答案 0 :(得分:6)

您需要使用BeginRouteForm,因为Web API路由的链接生成始终取决于路由名称。另外,请确保提供名为httproute的路由值,如下所示。

@using (Html.BeginRouteForm("DefaultApi", new { controller="Values", httproute="true" }))

答案 1 :(得分:2)

API控制器使用与默认路径不同的路径。它应该是从JS(AJAX)而不是真正的帖子中消费的,因此在HtmlHelpers中没有明显的支持。尝试:

Html.BeginForm("values", "api")

这会欺骗它认为“值”是动作而“api”是控制器。 “post”是从http方法中推断出来的。