ASP.NET MVC 4:表单输入值在提交时始终为null

时间:2013-03-14 17:41:25

标签: forms asp.net-mvc-4 form-submit

我正在尝试使用姓氏构建simnple搜索工具来搜索我的员工。

这是我的Razor View

    @using(Html.BeginForm("Index","Employee", FormMethod.Post))
{
    <p>
        Search employees by Last Name : @Html.TextBox("SearchString")
        <input type="submit" value="Submit" name="Search" />     
    </p>
}

这是我的控制器

        // GET: /Employee/
    public ActionResult Index(string lastName)
    {
        var employees = db.Employees;
        if (!String.IsNullOrEmpty(lastName))
        {
            employees = employees.Where(p => p.LastName.ToUpper().Contains(lastName.ToUpper()));
        }            
        return View(employees.ToList());
    }

调试显示提交按钮回发到索引方法,但返回到Index方法的值lastName始终为null。如何正确传递lastName?

2 个答案:

答案 0 :(得分:3)

您的@Html.TextBox("SearchString")名称和操作方法参数名称必须匹配。 (SearchString在)

[HttpPost]
public ActionResult Index(string SearchString)
{
    var employees = db.Employees;
    if (!String.IsNullOrEmpty(SearchString))
    {
        employees = employees.Where(p => p.LastName.ToUpper().Contains(SearchString.ToUpper()));
    }            
    return View(employees.ToList());
}

答案 1 :(得分:0)

您必须在ActionResult中为变量命名与字段名称相同,因此在您的示例中,要么将TextBox值设置为lastName,要么将变量命名为{{1}转到ActionResult Index