我有一个Web API项目作为我的解决方案的一部分(也包含一个MVC4项目),在Api项目中,我试图将一个表单发布到Values控制器Post方法(也在Api项目中的视图中)。
将Html.BeginForm()
或Html.BeginForm("Post", "Values")
个帖子用于/Values/Post
,但我需要转到/api/Values/Post
我想知道哪些重载或设置要发布到正确的位置?
我可以从fiddler中获取所有操作方法(例如localhost / api / values)。
答案 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方法中推断出来的。