我与ASP.NET MVC 4工作,我有以下型号:如何发布包含编辑模板的ICollection的一种形式?
public class MultiLanguageText
{
[Key] public int Id { get; set; }
[Required] public string Name { get; set; }
public virtual ICollection<LocalizedText> LocalizedTexts { get; set; }
}
public class LocalizedText
{
[Key] public int Id { get; set; }
[ForeignKey("Language")] public int LanguageId { get; set; }
public virtual Language Language { get; set; }
[ForeignKey("MultiLanguageText")] public int MultiLanguageTextId { get; set; }
public virtual MultiLanguageText MultiLanguageText { get; set; }
public string Text { get; set; }
}
我试图创建一个MultiLanguageText
编辑观点也将包含在LocalizedTexts
属性为每个项目的编辑器。形式是这样的:
@using (Html.BeginForm("Edit", "MultiLanguageText", FormMethod.Post)) {
@Html.ValidationSummary(true)
<fieldset>
<legend>MultiLanguageText</legend>
@Html.HiddenFor(model => model.Id)
<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>
@Html.EditorFor(model => model.LocalizedTexts)
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
我创建(文件~/Views/Shared/EditorTemplates/LocalizedText.cshtml
中)编辑模板如下:
<fieldset>
<legend>LocalizedText</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.LanguageId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LanguageId)
@Html.ValidationMessageFor(model => model.LanguageId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.MultiLanguageTextId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.MultiLanguageTextId)
@Html.ValidationMessageFor(model => model.MultiLanguageTextId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Text)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Text)
@Html.ValidationMessageFor(model => model.Text)
</div>
</fieldset>
我与一些预先存在的价值和测试所有当显示页面时,数据会在父级和子级编辑器中正确显示。然而,当我提交表单,里面任何一个子编辑完成的所有变化都将被忽略。
我HttpPost
方法是这样的:
[HttpPost]
public ActionResult Edit(MultiLanguageText multilanguagetext)
{
if (ModelState.IsValid)
{
db.Entry(multilanguagetext).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(multilanguagetext);
}
我的问题是:如何让这个所有值都贴出来,同时从父模型及其子模型编辑?(我见过的其他类似的问题存在,但我已经试过他们的解决方案,他们似乎并没有解决我的问题。)
你能提供一点的更多信息?发布的键/值对是什么样的?该集合是否已填充,但具有默认值?或者它是空的?或者它是空的? – StriplingWarrior
我和种子值,其中集合不为空测试。数据从数据库中成功检索。编辑器模板正确显示并显示正确的值。问题是在提交表单时,集合中的任何更改都不会保存。 –