1
私のプロジェクトでMVC3 EFモデルを最初に使用しています。MVC:ユーザーが編集ページにいるときのリストボックスの選択値
ユーザーが質問を作成するとき、ユーザーはListBoxから複数のCoreValuesを選択できます。 ユーザーが編集ページに移動して質問のCoreValuesを変更すると、リストボックスにはすでにそれらのコア値が選択されています。
これは私のViewModelです:
public class AdminEditViewModel
{
public string QuestionText { get; set; }
public string SubjecTypeName { get; set; }
public string CoreValueName { get; set; }
public SelectList SubjectTypes { get; set; }
public IEnumerable<string> SelectedValuesOfCoreValues { get; set; }
public IEnumerable<CoreValue> CoreValues { get; set; }
}
、これは私のコントローラで私のGETとPOSTアクションです:
public ActionResult Edit(int id)
{
Question question = AdminRep.GetQuestionById(id);
AdminEditViewModel model = new AdminEditViewModel();
List<SubjectType> subjectypes = AdminRep.GetAllSubjectTypesById();
model.CoreValues = AdminRep.GetAllCorevaluesById();
model.QuestionText = question.QuestionText;
model.SubjectTypes = new SelectList(subjectypes, "Id", "Name",question.SubjectType.First().Id);
return View(model);
}
//
// POST: /Admin/Edit/5
[HttpPost, ActionName("Edit")]
public ActionResult EditConfirmed(int id, AdminEditViewModel model)
{
if (ModelState.IsValid)
{
Question question = AdminRep.GetQuestionById(id);
question.QuestionText = model.QuestionText;
question.SubjectType.Clear();
question.CoreValue.Clear();
foreach (var item in model.SelectedValuesOfCoreValues)
{
var CoreValueID = int.Parse(item);
var GetAllCoreValuesID = AdminRep.GetByCoreValueID(CoreValueID);
question.CoreValue.Add(GetAllCoreValuesID);
}
var SubjectTypeID = int.Parse(model.SubjecTypeName);
var getallS = AdminRep.GetBySubjectTypeID(SubjectTypeID);
question.SubjectType.Add(getallS);
AdminRep.save();
return RedirectToAction("Index");
}
return View(model);
}
と私のビュー:事前に
<div class="editor-field">
@Html.ListBoxFor(m => m.SelectedValuesOfCoreValues, new MultiSelectList(Model.CoreValues, "Id", "Name"), new { @class = "selectstyle" })
@Html.ValidationMessageFor(model => model.CoreValueName)
</div>
ありがとう!
http://stackoverflow.com/questions/3194143/challenges-with-selecting-values-in-listboxfor –