如何使用FormMethod.Post而不是查询字符串从视图中将四个文本框值之一发布到控制器?

时间:2013-03-01 15:40:47

标签: asp.net-mvc razor

我有一个包含四个文本框(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方法发送值,我会在所有条件下进行检查。

1 个答案:

答案 0 :(得分: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
    }

    ...
}