2011-08-26 67 views
1

我在控制器内部有2个操作方法。发布数据到操作方法MVC2.0

public ActionResult SelectOrders() 
{ 
    return View(); 
} 

public ActionResult ProcessOrders(String OrderNos) 
{ 
return View(); 
} 

在SelectOrders视图,用户将选择订单ID,当他点击提交,选择订单号真让ProcessOrders视图中显示。目前,我将选定的acc数字存储在Javascript数组中,并将查询字符串传递给ProcessOrders视图(Window.href)。我相信这不是完成这项工作的最佳方式,因为用户可以选择超过100-200个订单。处理此功能的其他可能/最佳方式是什么?

+0

是数量级的动态或总是一样的吗? – cpoDesign

+0

订单只会在页面中加载一次。 – RRForUI

回答

0

你想使用的是模型。 这将是我的解决方案。

定义实体的订单

public class OrderItem{ 
public int Id{get;set;} 
public string Name{get;set;} 
} 

收集订单,以酒吧为选择订单

public class SelectOrdersModel{ 
public IEnumerable<OrderItem> Orders{get;set;} 
} 

现在修改你的控制器:

public ActionResult SelectOrders(SelectOrdersModel model) 
{ 
SelectOrdersModel modelToDisplay = (model==null)? new SelectOrdersModel():model; 
//populate model here 
return View(modelToDisplay); 
} 

,并获取数据:

public ActionResult ProcessOrders(SelectOrdersModel model) 
{ 
// process your model here 

if(!ModelState.IsValid)return RedirectToAction(“SelectOrders”,model); //重定向或做你的逻辑在这里 }

重定向形式,你会做如:

<% using(Html.BeginForm("ActionName")) 
    { 
     //your form data here 
    }%> 
+0

感谢cpoDesign。但是这里有两个问题。 1)我的理解是,当您选择订单并提交表单(SelectOrders)时,它将被提交给SelectOrders操作方法,而不是ProcessOrders Action方法。我们可以从第一个Action方法提交给第二个2)我们如何在View上将所选定单存储在模型中?这些订单在表格中通过与其关联的复选框呈现。 – RRForUI

+0

谢谢,我会试试这个。 – RRForUI