将多个值/参数从视图传递到mvc控制器更短的方式

时间:2016-09-01 14:25:00

标签: c# asp.net-mvc asp.net-mvc-4 razor

我是MVC的新手......并开始掌握它。我想知道是否有更短的方法将参数从视图传递到mvc控制器。我正在创建一个包含可能条件的搜索框。

这里是视图中的示例代码

@using (Html.BeginForm("Action", "Controller", FormMethod.Get))
{
    <p>
        Find by fname: @Html.TextBox("fname", ViewBag.CurrentFilter as string)
        <br/>
        Find by lname: @Html.TextBox("lname", ViewBag.CurrentFilter as string)
        <br/>
        By Area Code : @Html.TextBox("AreaCode")
        <br/>
        @Html.DropDownList("StateCD", new SelectList(ViewBag.State))
        <br/>
        <input id="Button1" type="submit" value="Search"/>
    </p>
}

在我的控制器中

     public async Task<ActionResult> Action(string id, string sortorder, string statecd,int? page,string country,string areacode,string city,string zip,string z)
    {

}

有没有办法缩短该参数,如对象或连接值?

1 个答案:

答案 0 :(得分:0)

您可以创建一个类来表示搜索过滤器,并将其用作操作方法参数类型。

public class SearchVm
{
  public strng StateCd { set;get;}
  public string AreaCode { set;get;}
  public string Zip { set;get;}
  // Add other needed properties as well
}

并将其用作参数

public async Task<ActionResult> Search(SearchVm model)
{
    // check model.AreaCode value etc..
    // to do : Return something
}

提交表单时,默认模型绑定器将能够将发布的表单数据映射到方法参数对象的属性,假设您的表单字段名称与类属性名称匹配