【发布时间】:2016-10-20 12:35:38
【问题描述】:
我正在尝试在 MVC 中创建一个用户列表,其中有一个按钮可以添加随机生成的用户,并且每个用户都有一个删除按钮可以将它们从列表中删除。 我将它从控制器发送到视图并生成一个用户。当我尝试再添加一个时,它只是改变了它。我猜它会删除列表中的项目。 我正在尝试将列表传递回控制器,但它不起作用。 有人可以帮忙吗?
我的模特:
public class UsersClass
{
public int Code { get; set; }
public string Name { get; set; }
public UsersClass(int Code, string Name)
{
this.Code = Code;
this.Name = Name;
}
}
我的控制器:
List<UsersClass> UsersList = new List<UsersClass>();
public ActionResult Index()
{
return View(UsersList);
}
[HttpPost]
public ActionResult AddUser(List<UsersClass> UsersList)
{
if (UsersList == null)
{
int a = 123;
UsersList = new List<UsersClass>();
}
Random generator = new Random();
string[] vez_nevek = new string[10] { "Kovács", "Szekeres", "Király", "Szabó", "Vicha", "Kozma", "Ferencz", "Pócsi", "Tinka", "Horváth" };
string[] ker_nevek = new string[10] { "Lajos", "Barnabás", "Róbert", "Balázs", "János", "Béla", "Petra", "Anna", "Ferenc", "Attila" };
string vezetek_nev = vez_nevek[generator.Next(vez_nevek.Length)];
string kereszt_nev = ker_nevek[generator.Next(ker_nevek.Length)];
UsersList.Add(new UsersClass(generator.Next(100000, 999999), vezetek_nev + " " + kereszt_nev));
return View("~/Views/UserManagement/Index.cshtml", UsersList);
}
和我的视图添加一个用户:
<h2>User Management</h2>
@using (Html.BeginForm("AddUser", "UserManagement", FormMethod.Post))
{
int index = 0;
foreach (var item in Model)
{
Html.Hidden("item[" + index + "].Code", item.Code);
Html.TextBox("item[" + index + "].Name", item.Name);
index++;
}
<input type="submit" value="Add User" />
}
【问题讨论】:
-
您尝试生成与您的模型无关且永远不会绑定到它的
name属性(并且您显示的代码甚至不会生成任何 html,因为缺少@在@Html.Hidden(...))。使用@for(int i = 0; i < Model.Count; i++) { @Html.HiddenForm(m => m[i].Code) @Html.TextBoxFor(m => m[i].Name) }正确生成视图。然后参考this answer
标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4