次のコードがある場合(編集: わかりにくかった場合は申し訳ありませんが、以下をカプセル化したい (呼び出し元のビューは忘れてください) ) 内で他のことを実行できるようにします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 の 1 つです。しかし、コードをコピーして他のビューに貼り付けることなく、他のビューで使用できるようにしたいと考えていますActionResults
。ActionResult
他のことをするつもりなので、電話するだけではうまくいきません。特に、次ActionResult
のようなウィザードのコードがそれぞれにあります。
if ((nextButton != null) && ModelState.IsValid)
return RedirectToAction("EMailConfirm");
return View("EMail/BasicDetails", myData);
特定のビューを返すため、ActionResult
何かが欠けていない限り、呼び出しだけでは機能しません。