C# MVC动态表单字段

C# MVC动态表单字段,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我读过这篇文章,它展示了如何通过使用编辑器模板来显示动态字段 如何通过单击“添加字段”按钮创建新字段 我已经在谷歌上搜索了这个,并查看了一些例子,但对于一个简单的过程来说,它们似乎太复杂了。在PHP中,只需将[]附加到字段名的末尾,然后就可以通过循环运行它 在MVC中应该有一种更简单的方法来实现这一点,因为它是一种较新的技术,对吗?动态表单字段可以很容易地完成,如下所示: 型号: public class MyViewModel { public string Name { get; s

我读过这篇文章,它展示了如何通过使用编辑器模板来显示动态字段

如何通过单击“添加字段”按钮创建新字段

我已经在谷歌上搜索了这个,并查看了一些例子,但对于一个简单的过程来说,它们似乎太复杂了。在PHP中,只需将
[]
附加到字段名的末尾,然后就可以通过循环运行它


在MVC中应该有一种更简单的方法来实现这一点,因为它是一种较新的技术,对吗?

动态表单字段可以很容易地完成,如下所示:

型号:

public class MyViewModel
{
    public string Name { get; set; }
    public List<string> EmailAddresses { get; set; }
}

看看这篇文章,它可能不完全是你想要的,但它可能会给你一些启示,谢谢,但我已经看过了。它使用knockout.js,我不知道。你找到出路了吗?@shyamalparikh哇,你发表评论的时候真是太巧了,几天前我只需要做动态表单字段,这个问题已经两年了!请参阅下面我的答案…这是否适用于客户端验证?例如,我们是否可以在ViewModel中添加[Required],MVC将处理@ValidationMessageFor?@shyamalparikh是的,它将影响ModelState,就像您在MVC中提交的任何其他表单一样。注意:我将
EmailAddresses[]
更改为
EmailAddresses
,MVC似乎不需要括号,包括括号将使其失效。
@model MyViewModel

@Html.TextboxFor(m => m.Name)

@* you can add as many of these as you like, or add them via javascript *@
<input type="text" name="EmailAddresses" />
<input type="text" name="EmailAddresses" />
<input type="text" name="EmailAddresses" />
@* you can also use razor syntax *@
@Html.Textbox("EmailAddresses")
[HttpPost]
public ActionResult MyAction(MyViewModel model)
{
    // note that model.EmailAddresses contains your list of email addresses
    foreach (string email in model.EmailAddresses)
        email = email; // do whatever you want with this...

    return View();
}