2011-06-27 65 views
0

我在表单中有几个过滤器选项。我已经给出了行动方法。代码如下所示。将参数传递给Action方法

<% using (Ajax.BeginForm 
     (new AjaxOptions { UpdateTargetId = "accountsGrid" })) 
     { %> 
<body style="overflow: scroll"> 
<%= Html.TextBox("subAccNumber",accId) %> 
<%= Html.TextBox("accountName", Name)%> 
<%= Html.TextBox("address", address)%> 
    <%} %> 

<%Html.RenderAction("SelectAccounts"); %> 

</body> 

public PartialViewResult SelectAccounts(string accId,string accountName,string address) 
     { 
      // Do some stuff 
        return PartialView(); 
} 

我可以克里特字典或所有的输入参数(表单控件)的东西,并通过直接作用的方法?或者我必须为每个控件添加单独的参数?

+1

你应该接受一些前一个问题的回答获得了良好的反响 – Tassadaque

回答

0

你有两个选择:

  1. 创建一个视图模式(推荐的方法):

    public class AccountViewModel 
    { 
        public string SubAccNumber { get; set; } 
        public string AccountName { get; set; } 
        public string Address { get; set; } 
    } 
    

    ,有你的控制器动作接受这个视图模型作为参数:

    public PartialViewResult SelectAccounts(AccountViewModel account) { ... } 
    
  2. 您当前的实现将参数作为操作参数传递

  3. 从请求提取参数:

    public ActionResult SelectAccounts() 
    { 
        var subAccNumber = Request["subAccNumber"]; 
        var accountName = Request["accountName"]; 
        var address = Request["address"]; 
        ... 
    }