我正在使用.NET MVC创建一个表单,当我在@BeginForm中传递参数时,无论我做什么,它都会使用get。
这是我到目前为止所拥有的:
@using (Html.BeginForm("QueryIndexUpdate", "Analysis", FormMethod.Post)){}
我尝试删除“,FormMethod.Post”以查看会发生什么,仍然使用GET。 当我不带参数使用BeginForm()时,它使用POST,但是在控制器中调用了错误的方法(它返回索引)。
我为什么会遇到这个问题的任何想法?
控制器
[Route("query/_queryindexfilterpartial")]
[HttpPost, ValidateAntiForgeryToken]
public ActionResult QueryIndexUpdate(QueryFilterViewModel filterModel)
{
if (ModelState.IsValid)
{
filterModel.Field = filterModel.Field ?? 0; filterModel.Item = ListBoxExtension.GetSelectedValues<int>("Item");
}
return RedirectToAction("Query", "Analysis", filterModel);
}
答案 0 :(得分:0)
查看控制器方法。我可以看到它的名称与表单不匹配。这可能就是为什么它永远无法达到的原因。
答案 1 :(得分:0)
我遇到的问题不是因为BeginForm。 BeginForm可以正常工作并发布所有内容,但是RedirectToAction仅将参数作为GET传递,因此将其更改为其他内容,一切都按预期工作。