イベントを作成するときに選択できるユーザートピックを表示するMVC3プロジェクトを作成しています。ただし、ドロップダウンリストから値を選択すると、フィールド「トピック」の値は常にnullになります。
クラスは次のとおりです。
public class VolunteerEvent
{
public int VolunteerEventID { get; set; }
public DateTime VolunteerDate { get; set; }
public int ZIPcode { get; set; }
public int Hours { get; set; }
public string Topic { get; set; }
}
文字列を格納するダミークラス
public class VolunteerTopic
{
public int VolunteerTopicID { get; set; }
public string VolunteerTopicName { get; set; }
}
アクションを作成するためのコントローラー
public ActionResult Create()
{
ViewBag.VolunteerTopicID = new SelectList(db.VolunteerTopics, "VolunteerTopicID", "VolunteerTopicName");
return View();
}
//
// POST: /LogVolunteerEvent/Create
[HttpPost]
public ActionResult Create(VolunteerEvent volunteerevent)
{
if (ModelState.IsValid)
{
db.VolunteerEvents.Add(volunteerevent);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.VolunteerTopics = new SelectList(db.VolunteerTopics, "VolunteerTopicID", "VolunteerTopicName",
volunteerevent.Topic);
return View(volunteerevent);
}
およびビューの関連部分
<div class="editor-label">
@Html.LabelFor(model => model.Topic)
</div>
<div class="editor-field">
@Html.DropDownList("VolunteerTopicID")
@Html.ValidationMessageFor(model => model.Topic)
</div>
興味のある人のためのhtmlの結果
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Create</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script src="/Scripts/modernizr-2.5.3.js" type="text/javascript"></script>
</head>
<body>
<div class="page">
<h2>Create</h2>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<form action="/logvolunteerEvent/Create" method="post"> <fieldset>
<legend>VolunteerEvent</legend>
<div class="editor-label">
<label for="VolunteerDate">VolunteerDate</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-required="The VolunteerDate field is required." id="VolunteerDate" name="VolunteerDate" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="VolunteerDate" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="ZIPcode">ZIPcode</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-number="The field ZIPcode must be a number." data-val-required="The ZIPcode field is required." id="ZIPcode" name="ZIPcode" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="ZIPcode" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="Hours">Hours</label>
</div>
<div class="editor-field">
<input class="text-box single-line" data-val="true" data-val-number="The field Hours must be a number." data-val-required="The Hours field is required." id="Hours" name="Hours" type="text" value="" />
<span class="field-validation-valid" data-valmsg-for="Hours" data-valmsg-replace="true"></span>
</div>
<div class="editor-label">
<label for="Topic">Topic</label>
</div>
<div class="editor-field">
<select id="VolunteerTopicID" name="VolunteerTopicID">
<option value="1"> Advocacy</option>
...a bunch of values...
</select>
<span class="field-validation-valid" data-valmsg-for="Topic" data-valmsg-replace="true"></span>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</form>
<div>
<a href="/logvolunteerEvent">Back to List</a>
</div>
</section>
<footer>
</footer>
</div>
</body>
</html>