首页 > 解决方案 > 带有指定参数的 Html.BeginForm 使用 GET 而不是 POST

问题描述

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

标签: c#asp.net.netasp.net-mvcmodel-view-controller

解决方案


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


推荐阅读