1

我有一个Web API项目作为我的解决方案(也包含一个MVC4项目)的一部分,并在Api项目中我试图将表单发布到值控制器Post方法(从视图也在Api项目中)。在WebApi中的Html.BeginForm - 路由

使用Html.BeginForm()Html.BeginForm("Post", "Values")职位,以/Values/Post但我需要它去/api/Values/Post

任何想法,这超载或设置我需要发布到正确的位置?

我可以从小提琴手(例如localhost/api/values)中击中所有的动作方法。

回答

2

API控制器使用到默认的不同路由。它应该从JS(AJAX)而不是真正的表单文章中消耗,因此在HtmlHelpers中没有明显的支持。尝试:

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

这会诱使它认为“值”是动作,“api”是控制器。 “发布”是从http方法推断的。

+0

感谢flem的作品:)我可以重新编写Ajax中的形式,如果这是它应该做的事 –

+0

@Kiran Challa的答案是正确的答案 –

6

您需要使用BeginRouteForm作为链接生成到Web API路由始终取决于路由名称。还请确保提供如下路线值httproute

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