如果我有以下代码(编辑:对不起,如果我不清楚,我想封装以下(忘记它的调用视图),以便我可以做其他东西ActionResult
):重新使用控制器内的ActionResult代码
public ActionResult ModelBased(string[] items, PostedItems postedItems) {
var model = new ItemsViewModel();
var selectedItems = new List<Item>();
var postedItemIDs = new string[0];
if (postedItems == null) postedItems = new PostedItems();
if (items!= null && items.Any()) {
postedCityIDs = items;
postedItems.ItemIDs = items;
}
if (postedItems.ItemIDs != null && postedItems.ItemIDs.Any()) {
postedItemIDs = postedIems.ItemIDs;
model.WasPosted = true;
}
if (postedItemIDs.Any())
selectedItems = ItemRepository.GetAll()
.Where(x => postedItemIDs.Any(s => x.Id.ToString().Equals(s))).ToList();
model.AvailableItems = ItemRepository.GetAll();
model.SelectedItems = selectedItems;
model.PostedItems = postedItems;
return View(model);
}
我怎么可能会重用它在我的控制器不同的操作,而无需复制/粘贴。我试着用代码做一个私有方法。但我被困在:
要么叫错了一个操作方法中:
private void Item (Item item) {//copied code from above}
然后调用在行动Item(item);
;或它与
(string[] items, PostedItems postedItems)
有关,我做错了;或一些完全不同的东西我做得不对。
任何示例将不胜感激。
编辑:上面的代码与CheckBoxList一起使用。这是一个特定的CheckBoxList。但我希望能够在其他视图中使用它,而无需将代码复制/粘贴到其他ActionResults
。只是拨打ActionResult
将无法正常工作,因为我打算做其他事情。特别是,我必须在每个ActionResult
向导,例如代码:
if ((nextButton != null) && ModelState.IsValid)
return RedirectToAction("EMailConfirm");
return View("EMail/BasicDetails", myData);
其返回的具体意见,所以打电话只是ActionResult
都不行,除非我失去了一些东西。
这就是原生的'ActionResult'。我正试图找出一种方法在控制器中的其他操作中重用该代码。基本上,重用该代码是因为我需要将其放在其他操作中。我宁愿保持干爽。 – REMESQ 2012-02-17 22:49:58
这就是我要说的。将代码放在私有方法中。但是您需要指定视图名称才能使其工作。 – jgauffin 2012-02-18 11:28:51
对不起,如果我误解了。我明白你在说什么。我的问题是如果我添加向导的代码并重定向或返回特定的视图。看到我上面的编辑。 – REMESQ 2012-02-18 13:45:31