如果我有以下代碼(編輯:對不起,如果我不清楚,我想封裝以下(忘記它的調用視圖),以便我可以做其他東西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