したがって、単純な mvc4 アプリケーションを構築しています。DB を作成するためのすべての基本モデルを作成しました。これらのクラスから、一致するビューを持つ基本的なコントローラーを自然に作成できます。
今私の問題: 基本的な create actionresult + ビューがあり、このビューで、ユーザーがドロップダウンリストからいくつかの値を選択できるようにして、新しいオブジェクトの作成をより簡単にしたいと考えました。
これらのドロップダウンを使用したい場合(最初のフォームは基本的な作成フォームです)、ビューの2番目のフォームでこれを達成しようとしました(それらは互いにフィルタリングします(最初にユーザーが大陸を指定する必要があり、次に国はその大陸の国のみを表示し、国を指定した後、地域のドロップダウンが更新されます:) ))基本ビューの送信は常に自動的に呼び出されます。
したがって、ドロップダウン自体を更新することは問題ではありません:sドロップダウンが更新されると、作成用のフォームが自動的に検証されることです
これは、ドロップダウンが相互にフィルタリングするコントローラーです
//
// GET: /FederationCenter/Create
public ActionResult Create(string searchRegion, string searchCountry, string searchContinent)
{
var countries = from c in db.Countries select c;
if (!String.IsNullOrEmpty(searchContinent))
{
Continent searchContinentEnumValue = (Continent)Enum.Parse(typeof(Continent), searchContinent);
countries = from c in db.Countries where ((int)c.Continent).Equals((int)searchContinentEnumValue) select c;
}
var regions = from r in db.Regions where r.Country.Name.Equals(searchCountry) select r;
ViewBag.searchContinent = new SelectList(Enum.GetNames(typeof(SchoolCup.Domain.Continent)));
ViewBag.searchCountry = new SelectList(countries, "Name", "Name");
ViewBag.searchRegion = new SelectList(regions, "Name", "Name");
return View();
}
//
// POST: /FederationCenter/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(NSSF nssf, string searchRegion, string searchCountry, string searchContinent)
{
var countries = from c in db.Countries select c;
if (!String.IsNullOrEmpty(searchContinent))
{
Continent searchContinentEnumValue = (Continent)Enum.Parse(typeof(Continent), searchContinent);
countries = from c in db.Countries where ((int)c.Continent).Equals((int)searchContinentEnumValue) select c;
}
var regions = from r in db.Regions where r.Country.Name.Equals(searchCountry) select r;
ViewBag.searchContinent = new SelectList(Enum.GetNames(typeof(SchoolCup.Domain.Continent)));
ViewBag.searchCountry = new SelectList(countries, "Name", "Name");
ViewBag.searchRegion = new SelectList(regions, "Name", "Name");
if (ModelState.IsValid)
{
var naam = Request["searchRegion"];
Region creatie = (from c in db.Regions where c.Name.Equals(naam) select c).SingleOrDefault();
nssf.ISFId = 1;
nssf.RegionId = creatie.RegionId;
db.NSSFs.Add(nssf);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(nssf);
}
これが私の見解です
@model SchoolCup.Domain.POCO.NSSF
@{
ViewBag.Title = "Create";
}
<h2>Create NSSF</h2>
<div>
@using (Html.BeginForm(null, null, FormMethod.Post, new { name = "form" }))
{
@Html.AntiForgeryToken()
@Html.DropDownList("searchContinent", null, "-- All continents --", new { onchange = "sendForm()" })
@Html.DropDownList("searchCountry", null, "-- All countries --", new { onchange = "sendForm()" })
@Html.DropDownList("searchRegion", null, "-- All regions --", new { onchange = "sendForm()" })
<>
<input type="submit" name= value="Search" />
}
</div>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>NSSF</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
いくつかの入力
</fieldset>
<p>
<input type="submit" value="Create" />
@Html.ActionLink("Back to List", "Index", null, new { @class = "button" })
</p>
}
@section Scripts {
<script type="text/javascript">
function sendForm() {
document.form.submit()
}
</script>
}
私は少なくとも1日探していましたが、これを解決する方法がわかりません
アレクサンダーに関して