3

従業員を姓で検索する単純な検索ユーティリティを構築しようとしています。

これが私の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 メソッドにポストバックされていることが示されていますが、Index メソッドに返される値 lastName は常に null です。lastName を正しく渡すにはどうすればよいですか?

4

2 に答える 2

3

@Html.TextBox("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());
}
于 2013-03-14T17:45:02.123 に答える
0

ActionResultフィールド名と同じ変数に名前を付ける必要があるため、例では、TextBox値をに設定するlastNameか、変数に名前ActionResult Indexを付けます。SearchString

于 2013-03-14T17:44:51.237 に答える