【发布时间】:2012-03-14 05:07:30
【问题描述】:
我正在开发一个应用程序,我需要能够在运行时从数据库加载对象属性。客户希望能够将属性添加到数据库并让它们显示在应用程序中。我通过给我的模型一个包含名称、类型和值的 Field 对象列表来实现这一点。这适用于显示和编辑项目属性,但我在编辑器视图中验证时遇到问题。感谢您的帮助。
我希望能够在我的编辑操作中执行此操作:
[HttpPost]
public ActionResult Edit(Movie movie)
{
if (ModelState.IsValid)
{
db.Entry(movie).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(movie);
}
普通视图:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Movie</legend>
@Html.HiddenFor(model => model.ID)
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
</fieldset>
}
我需要做什么:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Movie</legend>
@Html.HiddenFor(model => model.ID)
for(i = 1 to n) {
<div class="editor-label">
@Html.LabelFor(model => model.Fields[i].Name)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Fields[i].Value)
@Html.ValidationMessageFor(model => model.Fields[i].Value)
</div>
}
</fieldset>
}
型号:
public class Movie
{
public Movie()
{
this.Fields = new List<Field>();
}
public List<Movie> Movies { get; set; }
}
字段类:
public class Field
{
public string Name { get; set; }
public Type Type { get; set; }
public object Value { get; set; }
}
【问题讨论】:
-
你能指定你的模型是什么样子的吗?
标签: c# asp.net .net asp.net-mvc-3 web-applications