我有一个类似BookCover的通用枚举,我不想向用户显示。他们只能从现有的选择中选择一本书籍封面。
public class BookCover {
public bool IsSelected { get; set; }
public string CoverPathThumb { get; set; }
public string SpinePathThumb { get; set; }
public string BackPathThumb { get; set; }
}
我的行动方法类似于
公共ActionResult SelectCover(IEnumerable的< BookCover> 覆盖);
在我的模板中,我只是枚举并写出所需的HTML,但问题是我不知道如何从帖子中获取数据。
如何命名我的< input> ID的?还有另一个原因是IEnumerabme在回发后没有填充吗?
答案 0 :(得分:2)
@ Vince :您可以自定义ModelBinder。在ModelBinder中,您可以从HttpContext.Request.Form获取数据,之后您将构建新的BookCover集合。你最后打电话给
public ActionResult SelectCover(IEnumerable<BookCover> covers);
请记住在Global.asax中将其注册为:
ModelBinders.Binders[typeof(IEnumerable<BookCover>)] = new YourModelBinderName();
答案 1 :(得分:0)
您应该添加BookCover类型的ID,然后使用此ID来标识用户选择的封面。如果您从数据库中检索封面,只需在您的班级中使用此ID。
答案 2 :(得分:0)
我认为你可以这样做:
<% foreach(var item in covers) { %>
<%: Html.EditorFor(x => item.IsSelected) %>
<% } %>
答案 3 :(得分:0)
输入的名称应采用以下格式:
covers[0].IsSelected
covers[0].CoverPathThumb
covers[0].SpinePathThumb
covers[0].BackPathThumb
E.g。
<input type="text" name="covers[0].CoverPathThumb" />
每个封面条目增加0。