如何将表单数据正确发布到控制器操作?

时间:2016-04-05 20:13:10

标签: c# asp.net-mvc

我无法将表单中的数据发布到控制器操作中。我已经使用HTML.BeginForm()创建了表单,并且我有一个控制器,当我手动创建查询字符串时,它可以正常工作,但我不了解如何使用我的控制器操作使表单工作。 / p>

<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>

然后在我的控制器中,我当前拥有ASP.NET自动放置的HttpGet属性。但是,如果我将其更改为HttpPost,问题仍然存在。

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

当我输入文字并提交表格时,网络请求将发送至:

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

只需加载默认控制器和操作,而不是&#34;搜索&#34;我在using语句中指定的控制器。如何正确发布特定操作?

2 个答案:

答案 0 :(得分:3)

<form class="navbar-form navbar-left"> <div class="form-group> @using (Html.BeginForm("GeneralSearch", "Search", 添加了GET标记,但我发现您正在尝试将表单标记添加到另一个表单标记中,如下所示;这是错误的。

POST

同样,您的控制器必须公开不同的操作方法以满足public ActionResult GeneralSearch() { return View(); } [HttpPost] public ActionResult GeneralSearch(string searchString) { return View("SearchResult", viewModel); } var AWS = require('aws-sdk'); var s3 = new AWS.S3({apiVersion: '2006-03-01'}) var params = { Bucket: record.s3.bucket.name, Key : record.s3.object.key }; s3.headObject(params, function (error, response) { if(error) { context.fail(); } else { var date = response.LastModified; //Last modified date context.done(null,date); } }); 请求,您应该

Etudiant

答案 1 :(得分:1)

您正在发布正在侦听GET的方法。

切换FormMethod

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