如果我有以下代码(编辑:对不起,如果我不清楚,我想封装以下内容(忘记它的调用视图),以便我可以在其中做其他事情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
它们正在返回特定的视图,因此除非我遗漏了什么,否则调用将不起作用。