簡體   English   中英

如何正確將表單數據發布到控制器操作?

[英]How do I correctly post form data to a controller action?

我無法將數據從表單發布到控制器操作。 我已經使用HTML.BeginForm()創建了表單,並且有一個控制器,當我手動創建查詢字符串時,該控制器可以正常工作,但是我不理解如何使表單與控制器動作一起工作。

<form class="navbar-form navbar-left">
                    <div class="form-group>
                        @using (Html.BeginForm("GeneralSearch", "Search", FormMethod.Post))
                        {
                            @Html.TextBox("searchString")

                            <button type="submit" class="default">Submit</button>
                        }

                    </div>
                </form>

然后,在我的控制器中,我目前擁有HttpGet屬性,ASP.NET自動將其放置在該屬性中。 但是,如果我將其更改為HttpPost ,仍然會出現問題。

    [HttpGet]
    public ActionResult GeneralSearch(string searchString)
    {
        return View("SearchResult", viewModel);
    }

輸入文本並提交表單后,網絡請求將發送到:

http://localhost:64562/?searchString=test

它只是加載默認的控制器和操作,而不是我在using語句中指定的“搜索”控制器。 如何正確發布特定動作?

Html.BeginForm(添加了<Form>標記,但是我看到您正在嘗試將表單標記添加到另一個表單標記中,如下所示;這是錯誤的。

<form class="navbar-form navbar-left">
                    <div class="form-group>
                        @using (Html.BeginForm("GeneralSearch", "Search",

同樣,您的控制器必須公開不同的操作方法來滿足GETPOST請求,您應該擁有

public ActionResult GeneralSearch()
{
    return View();
}

[HttpPost]
public ActionResult GeneralSearch(string searchString)
{
    return View("SearchResult", viewModel);
}

您正在發布到正在偵聽GET的方法。

切換FormMethod

@using (Html.BeginForm("GeneralSearch", "Search", FormMethod.Get))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM