gpt4 book ai didi

arrays - 发布字符串数组

转载 作者:行者123 更新时间:2023-12-01 19:21:45 25 4
gpt4 key购买 nike

如何处理输入数组

例如我认为:

<input type="text" name="listStrings[0]"  /><br />
<input type="text" name="listStrings[1]" /><br />
<input type="text" name="listStrings[2]" /><br />

在我的控制下,我尝试获取如下值:

[HttpPost]
public ActionResult testMultiple(string[] listStrings)
{
viewModel.listStrings = listStrings;
return View(viewModel);
}

在调试时,我每次都可以看到 listStringsnull

为什么它是 null 以及如何获取输入数组的值

最佳答案

使用 ASP.NET MVC 发布基元集合

要发布基元集合,输入只需具有相同的名称即可。这样,当您发布表单时,请求的正文将如下所示

listStrings=a&listStrings=b&listStrings=c

MVC 会知道,由于这些参数具有相同的名称,因此它们应该转换为集合。

因此,将您的表单更改为如下所示

<input type="text" name="listStrings"  /><br />
<input type="text" name="listStrings" /><br />
<input type="text" name="listStrings" /><br />

我还建议将 Controller 方法中的参数类型更改为 ICollection<string>而不是string[] 。所以你的 Controller 看起来像这样:

[HttpPost]
public ActionResult testMultiple(ICollection<string> listStrings)
{
viewModel.listStrings = listStrings;
return View(viewModel);
}
<小时/>

发布更复杂对象的集合

现在,如果您想发布更复杂对象的集合,请说 ICollection<Person>您对 Person 的定义在哪里类(class)是

public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}

然后您在原始形式中使用的命名约定将发挥作用。由于您现在需要代表不同属性的多个输入来发布整个对象,因此仅使用相同名称命名输入是没有意义的。您必须指定输入在名称中代表哪个对象和哪个属性。为此,您将使用命名约定 collectionName[index].PropertyName .

例如 Age 的输入Person 的属性可能有一个像people[0].Age这样的名字.

用于提交 ICollection<Person> 的表单在这种情况下看起来像:

<form method="post" action="/people/CreatePeople">
<input type="text" name="people[0].Name" />
<input type="text" name="people[0].Age" />
<input type="text" name="people[1].Name" />
<input type="text" name="people[1].Age" />
<button type="submit">submit</button>
</form>

等待请求的方法看起来像这样:

[HttpPost]
public ActionResult CreatePeople(ICollection<Person> people)
{
//Do something with the people collection
}

关于arrays - 发布字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28325456/

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