gpt4 book ai didi

c# - 如何在 HTTP POST 中获取 List 对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:07 24 4
gpt4 key购买 nike

我有两个模型类:

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 操作中为一些用户填写此集合,您将能够在表单内编辑他们的信息。

关于c# - 如何在 HTTP POST 中获取 List<Model> 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com