MVC表单不去控制器方法

本文关键字:控制器 方法 表单 MVC | 更新日期: 2023-09-27 18:15:35

我是新的mvc,所以我仍然在努力与一些概念。我有一个非常简单的表单和控制器。控制器:

    public class InquiryController : BaseController {
    public ActionResult Index() {
        return View();
    }
    public ActionResult Search(int Id) {
         int newid = Id;
        return View();
    }
}

和形式:

@using (Html.BeginForm("Index", "Results", FormMethod.Post))
{
    @Html.TextBox("id", null, new { type = "Search", autofocus = "true", style = "width: 200px" })
    <input type="submit" value="Search" />
}

发生的事情是,当我在表单中输入一个数字时,我希望这个数字被传递给控制器中的"Search"函数。我不明白如何让表单调用控制器并在该控制器内进行处理。相反,它会出现寻找"结果"页面的错误,我理解这来自BeginForm方法。所以本质上,我如何让我的表单将输入到搜索框中的数字传递给我的控制器函数?

MVC表单不去控制器方法

Html.BeginForm的前两个参数中指定要执行的动作和控制器。

@using (Html.BeginForm("Search", "Inquiry", FormMethod.Post))
{
    @Html.TextBox("id", null, new { type = "Search", autofocus = "true", placeholder = "Harvest Tag, 6 Digit Tag No.", style = "width: 200px" })
    <input type="submit" value="Search" />
}

在动作中,你可以像你正在做的那样访问Id,但你也可以从FormCollection["id"]Request["id"]中获得它作为原始字符串并验证它,以避免在用户提交无效int时出现解析错误。

BeginForm的第一个参数是要执行的操作,第二个参数是要执行的控制器,所以您的用法应该是:

@using (Html.BeginForm("Search", "Inquiry", FormMethod.Post))

传入的值是通过输入控件(id)的HTML ID找到的(在本例中)