私は次のコードを持っています(編集:申し訳ありませんが、もし私が明確でなかったら、私は以下をカプセル化したいと思います。 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)
と関係があります。または私が正しくやっていないこととは全く異なるものです。
いずれの例も高く評価されます。
EDIT:上記のコードはCheckBoxListで動作します。 1つの特定のCheckBoxListです。しかし、コードを他のビューにコピー/ペーストすることなく他のビューでも使用できるようにしたいと考えています。ActionResults
ActionResult
と呼ぶだけではうまくいきません。私は他のことをする予定です。私は何かが欠けていない限り、単にActionResult
は、動作しませんするために呼び出す、特定のビューを返している
if ((nextButton != null) && ModelState.IsValid)
return RedirectToAction("EMailConfirm");
return View("EMail/BasicDetails", myData);
:特に、私のような各ActionResult
のウィザード、ためのコードを持っています。
これは、「ActionResult」という文字列です。私はコントローラ内の他のアクションでそのコードを再利用する方法を見つけようとしています。基本的に、私は他のアクションに配置する必要があるので、コードを再利用する。私はむしろそれをDRYにしておきます。 – REMESQ
それは私が言っていることです。コードをプライベートメソッドに入れます。しかし、それを動作させるには、ビュー名を指定する必要があります。 – jgauffin
私が誤解して申し訳ありません。私はあなたが何を言っているのかを見ます。私の問題は、ウィザードのコードを追加し、特定のビューをリダイレクトまたは返す場合です。上記の私の編集を参照してください。 – REMESQ