2013-05-01 97 views
0

我看了這篇文章展示瞭如何通過使用編輯器模板http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/MVC動態表單域

如何創建通過單擊「添加字段」按鈕,新的字段顯示動態字段?

我已經使用了這個,看了一些例子,但他們似乎太複雜,應該是一個簡單的過程。在PHP中,您只需將[]附加到字段名稱的末尾,然後您可以通過循環運行它...

在MVC中應該有一種更簡單的方法,因爲它是較新的技術,對不對?

+0

它看起來像這可能是最簡單的工具ntation ...但是沒有人有更簡單的東西嗎? http://www.techiesweb.net/asp-net-mvc3-dynamically-added-form-fields-model-binding/ – user1477388 2013-05-01 15:37:34

+0

看看這篇文章,它可能不完全是你正在尋找,但它可能會流下一些光http://roysvork.wordpress.com/2012/12/09/dynamic-repeating-field-groups-in-asp-net-mvc-with-just-a-dash-of-knockout-js/ – 2013-05-01 16:03:03

+0

謝謝,但我已經看到一個。它使用knockout.js,我不這樣做。 – user1477388 2013-05-01 16:30:09

回答

0

動態表單域可以容易如下完成:

型號:

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

查看:

@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(); 
} 
+0

這是否與客戶端驗證一起工作?例如,我們可以在ViewModel中添加[Required],並且MVC會處理@ValidationMessageFor? – 2015-08-25 12:20:55

+0

@shyamalparikh是的,它將像MVC中提交的任何其他表單一樣影響ModelState。注意:我將'EmailAddresses []'改爲'EmailAddresses',看起來MVC不需要括號,並且包含它們會破壞它。 – user1477388 2015-08-26 18:04:57