【问题标题】:.net MVC Controller receive dynamic form field submitted value?.net MVC 控制器接收动态表单字段提交值?
【发布时间】:2016-12-16 07:56:21
【问题描述】:
@foreach (var item in b)
{
    itemCount++;
    <input type="hidden" name="class@(itemCount.ToString())" value="@item.CouseClassId" />
    <input type="hidden" name="item@(itemCount.ToString())" value="@item.AnotherId" />
}

html 会是这样的:

    <input type="hidden" name="class1" value="123" />
    <input type="hidden" name="item1" value="456" />
    <input type="hidden" name="class2" value="789" />
    <input type="hidden" name="item2" value="1011" />

我的控制器:

[HttpPost]
public ActionResult CarAddStudent(object model) {
    return View("Another");
}

在方法的控制器中,我是如何声明模型类型的,我会收到来自 Razor 的动态值?

【问题讨论】:

  • 您的模型属性名称必须与 html 输入控件的名称匹配,或者如果您想要具有相同名称的控件,那么模型将使用与该名称匹配的数组来获取它
  • 另请参阅this answer

标签: c# .net asp.net-mvc razor


【解决方案1】:

您可以使用列表来接收它们 像这样

<input type="hidden" name="class[0]" value="123" />
<input type="hidden" name="item[0]" value="456" />
<input type="hidden" name="class[1]" value="789" />
<input type="hidden" name="item[1]" value="1011" />

和你的控制器:

[HttpPost]
public ActionResult CarAddStudent(List<int> class,List<int> item) {
    return View("Another");
}

顺便说一下,我猜“class”和“item”是有关系的,所以你可能需要使用模型列表来接收,像这样:

<input type="hidden" name="student[0].class" value="123" />
<input type="hidden" name="student[0].item" value="456" />
<input type="hidden" name="student[1].class" value="789" />
<input type="hidden" name="student[1].item" value="1011" />

然后,你的接收模型应该是这样的:

[HttpPost]
public ActionResult CarAddStudent(List<Student> student) {
    return View("Another");
}

class 和 item 是 Student Class 的属性

【讨论】:

  • 你可以去掉student前缀。它应该只是 name="[0].class"
猜你喜欢
  • 2018-07-18
  • 2020-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 2017-03-29
相关资源
最近更新 更多