C# MVC表单不去控制器方法

C# MVC表单不去控制器方法,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我是mvc新手,所以我仍在为一些概念而挣扎。 我有一个非常简单的表单和控制器。 控制器: public class InquiryController : BaseController { public ActionResult Index() { return View(); } public ActionResult Search(int Id) { int newid = Id; return Vi

我是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" />
}
当我在表单中输入一个数字时,我希望将该数字传递给控制器中的搜索函数。我不明白如何让表单调用控制器并在控制器内进行处理。相反,它在查找结果页面时出错,据我所知,该页面来自BeginForm方法。
因此,从本质上讲,我如何让我的表单将输入到搜索框中的数字传递给我的控制器函数?

在Html.BeginForm的前两个参数中指定要执行的操作和要转到的控制器

在操作内部,您可以像现在这样访问Id,但也可以从FormCollection[Id]或Request[Id]获取Id作为原始字符串,并对其进行验证,以避免在用户提交无效int时出现解析错误。

第一个参数是要采取的操作,第二个参数是要执行的控制器,因此,您的用法应该是:

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

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

为什么在示例中有这样一个随机代码-显然您已经检查了说明参数是actionName、controllerName。。。然而,您的示例代码显示了一些完全不相关的值,您应该将[HttpPost]属性添加到控制器中的搜索方法中。
@using (Html.BeginForm("Search", "Inquiry", FormMethod.Post))