0

我有一个带有四个文本框(ID、batchID、EmployeeNumber、RefNumber)的搜索页面,它们都是数字。我不想使用查询字符串将这些值中的任何一个发送到控制器。所以我正在使用 Form.Post 方法,如下所示:

@using (Html.BeginForm("Details", "Search", FormMethod.Post, new { @id = Model.id }))

但我想让它成为全球性的,以便根据用户用于搜索的文本框,该值应该被发送到控制器并且如果可能的话它也是类型(比如他们输入了 ID 或 batchID 或....),以便它我将很容易相应地搜索数据库。请有人帮忙。

仅供参考:我的路线在 global.asax 中看起来像这样

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

我实际上正在考虑从我进行所有条件检查的javascript方法发送值。

4

1 回答 1

0

您可以定义一个视图模型:

public class SearchViewModel
{
    public int? Id { get; set; }
    public int? BatchID { get; set; }
    public int? EmployeeNumber { get; set; }
    public int? RefNumber { get; set; }
}

然后让您发布的控制器操作将此视图模型作为参数,您将能够检索用户在文本框中输入的值:

[HttpPost]
public ActionResult Details(SearchViewModel model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

    if (model.Id != null)
    {
        // the user entered something into the textbox containing the id
    }

    if (model.BatchId != null)
    {
        // the user entered something into the textbox containing the batch id
    }

    ...
}
于 2013-03-01T15:51:44.373 回答