から入力されるドロップダウンリストがあります
ビューモデル:
public class OrgPages
{
public int ID { get; set; }
public string URL { get; set; }
}
ヘルパー:
public SelectList PageList()
{
var pagelist = new List<OrgPages>();
foreach (var count in Enumerable.Range(1, 10))
{
var pages = new OrgPages();
pages.ID = count;
if(count == 1)
pages.URL = "Done";
else if (count == 2)
pages.URL = "Address";
else if (count == 3)
pages.URL = "Import/Export";
else if (count == 4)
pages.URL = "Membership";
else if (count == 5)
pages.URL = "Business Type";
else if (count == 6)
pages.URL = "Industry Type";
else if (count == 7)
pages.URL = "Phone Number";
else if (count == 8)
pages.URL = "Email";
else if (count == 9)
pages.URL = "Website";
else if (count == 10)
pages.URL = "Note";
pagelist.Add(pages);
}
return new SelectList(pagelist, "ID", "URL", 0);
}
コントローラーでヘルパーを開始します。
private DropDownPopulatorController ddp = new DropDownPopulatorController();
そして、投稿ではなく作成アクションで、ViewBag を呼び出します。
ViewBag.OrgPages = ddp.PageList();
HTTP POST create アクションで、OrgPages 値を渡します。
[HttpPost]
public ActionResult Create(OrganizationEmail email, int OrgPages)
{
try
{
// TODO: Add insert logic here
using (var db = new VAGTCEntities())
{
db.OrganizationEmails.Add(email);
db.SaveChanges();
}
if (OrgPages == 2)
return RedirectToAction("Create", "OrgAddress");
else if (OrgPages == 3)
return RedirectToAction("Create", "OrgIE");
else if (OrgPages == 4)
return RedirectToAction("Create", "OrgMembership");
else if (OrgPages == 5)
return RedirectToAction("Create", "OrgBusinessType");
else if (OrgPages == 6)
return RedirectToAction("Create", "OrgIndustryType");
else if (OrgPages == 7)
return RedirectToAction("Create", "OrgPhone");
else if (OrgPages == 8)
return RedirectToAction("Create", "OrgEmail");
else if (OrgPages == 9)
return RedirectToAction("Create", "OrgWebsite");
else if (OrgPages == 10)
return RedirectToAction("Create", "OrgNote");
else
return RedirectToAction("Index");
}
catch (Exception)
{
ModelState.AddModelError("Error", "This item exists in the database already.");
}
return View(email);
}
そして、ビューの作成ページで、これをフィールドセット内に配置しました。
<div>
@Html.Label("Add:")
</div>
<div>
@Html.DropDownList("OrgPages")
</div>
これで、誰かがフォームを送信すると、すぐにアクセスしたい次のページを選択できるようになりました。フォームの送信にエラーがない場合 (重複がない場合など) は問題なく動作します。ただし、重複した主キー、または同様のエラーがある場合、エラーが吐き出されますThere is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'OrgPages'.
助けてくれてありがとう!
編集 * アクションの作成
public ActionResult Create()
{
ViewBag.OrgPages = ddp.PageList();
return View();
}