具有指定参数的Html.BeginForm使用GET而不是POST

时间:2018-12-13 14:52:00

标签: c# asp.net .net asp.net-mvc model-view-controller

我正在使用.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); 
}

2 个答案:

答案 0 :(得分:0)

查看控制器方法。我可以看到它的名称与表单不匹配。这可能就是为什么它永远无法达到的原因。

答案 1 :(得分:0)

我遇到的问题不是因为BeginForm。 BeginForm可以正常工作并发布所有内容,但是RedirectToAction仅将参数作为GET传递,因此将其更改为其他内容,一切都按预期工作。