我有两个模型类:
public class UserModel
{
public Guid Id { get; set; }
public string EmailAddress { get; set; }
public string LoginName { get; set; }
public string Password { get; set; }
}
public class GroupModel
{
public Guid Id { get; set; }
public string Name { get; set; }
public List<UserModel> Users { get; set; }
}
我通过继承GroupModel类创建了一个 View (Create.Aspx)。
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<MyApp.Models.GroupModel>" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Create</title>
</head>
<body>
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Id) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Id) %>
<%: Html.ValidationMessageFor(model => model.Id) %>
</div>
<div class="editor-label">
<%: Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Name) %>
<%: Html.ValidationMessageFor(model => model.Name) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
</body>
</html>
它在我的 aspx View 中只生成两个字段(Id、Name)。此外,我还能够在 ё[HttpPost]ё 请求中获取模型类对象中的表单数据,其中包含 Controller 中 ID 和 NAME 字段的数据。
[HttpPost]
public ActionResult Create(GroupModel groupModel)
{
try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
如何获取List<UserModel>
中的数据目的 ?
我正在考虑放置一个带有包含用户的复选框的列表控件。然后使用 FormCollection
捕捉它们 Controller 中的对象。
请建议我的方法是否正确,或者有更好的方法吗?
您可以使用编辑器模板 (~/Views/Shared/EditorTemplates/UserModel.ascx
):
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<YourApp.Models.UserModel>" %>
<%: Html.TextBoxFor(model => model.Id) %>
<%: Html.ValidationMessageFor(model => model.Id) %>
<%: Html.TextBoxFor(model => model.EmailAddress) %>
<%: Html.ValidationMessageFor(model => model.EmailAddress) %>
<%: Html.TextBoxFor(model => model.LoginName) %>
<%: Html.ValidationMessageFor(model => model.LoginName) %>
...
然后在主视图中你可以包含这个编辑器模板:
...
<%: Html.EditorFor(model => model.Users) %>
<p>
<input type="submit" value="Create" />
</p>
这将为 Users
集合中的每个项目调用编辑器模板。因此,您可以在 GET 操作中为一些用户填写此集合,您将能够在表单内编辑他们的信息。
我是一名优秀的程序员,十分优秀!