我有一个ASP.NET MVC4应用程序。我在一个视图中有一个Ajax ActionLink,用于将一些信息发送回控制器动作。我需要Ajax ActionLink,因为我以前使用常规的Html.ActionLink进行GET,但我不希望参数在发送到服务器的查询字符串中可见。 Ajax ActionLink代码是:
Ajax.ActionLink("C/C", "CCSettings", new { loadHeaderID = DataBinder.Eval(c.DataItem, "LoadHeaderID") }, new AjaxOptions { HttpMethod = "Post" })
这最终会在页面中插入以下HTML:
<a data-ajax="true" data-ajax-method="Post" href="/LoadBoard/CCSettings?loadHeaderID=660">C/C</a>
我的控制器用HttpPost修饰,如下
[HttpPost]
public ActionResult CCSettings(int loadHeaderID)
{.....return View() }
单击Ajax ActionLink会出现404错误;即无法找到资源。 HttpPost似乎阻止访问控制器。但是,当我用[HttpGet]替换[HttpPost]时,访问控制器并返回View,但是参数显示在查询字符串中,这正是我想要避免的。
我确定我在这里做了一个简单的(和业余的)错误,但我似乎无法“弯曲”ActionLink来做我想要的,这是对控制器的POST以隐藏参数。我已尝试在Javascript中使用Ajax回发执行此操作但是,虽然这可以让我在使用HttpPost修饰时访问控制器,但我无法返回视图。
任何指示赞赏。