2014-03-18 37 views
0

我有一個需要能夠未知數量的這種模式類的後回來:郵冊<Model>從形式MVC

public class UserRegisterModel 
{ 
    public string UserName { get; set; } 

    public string Password { get; set; } 

    public string ConfirmPassword { get; set; } 

    public string RepName { get; set; } 

    public string ContactNumber { get; set; } 
} 

List<UserRegisterModel>到控制器。

我需要我的視圖有一個可以將模型的多個實例發送回控制器的窗體,例如,如果我的用戶想要添加3個Reps,他可以創建3個Reps,並給他們每個細節和用戶名以及密碼,並將它們一次全部發回列表中。

我有這樣的出發點,我的看法代碼:

@model List<PicsWebApp.Models.UserRegisterModel> 

@{ 
    ViewBag.Title = "NewRep"; 
} 

<h2>NewRep</h2> 

@using (Html.BeginForm("NewRep", "Admin", FormMethod.Post, new { id = "fieldform", @class = "form" })) 
{ 
} 

誰能告訴我解決這個問題的正確方法是什麼?我知道我需要JavaScript來動態添加更多的表單元素,如果用戶點擊「添加新的代表」,所以這主要是關於C#。

+1

看看,http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/ –

回答

2

你需要確保屬性的ID符合標準集(當我這樣做時,我使用了Felipe評論的鏈接)。我之前做過這個,當用戶點擊一個按鈕時,會添加一個表格行。我發現最好的方法是在頁面呈現之前添加一個條目,然後爲此獲取HTML,並在您的jQuery中使用它。

下面是我使用的功能:

$("#nameAdd").click(function (e) { 
    var index = $("#nameTable tr").length - 1; 
    e.preventDefault(); 
    var newItem = $("<tr> \ 
        <td> \ 
        <span id='Names_" + index + "__FullName' /> \ 
        </td> \ 
        <td> \ 
        <input class='table-editor-small update-name' id='Names_" + index + "__FirstName' name='Names[" + index + "].FirstName' type='text' value='' /> \ 
        </td> \ 
        <td> \ 
        <input class='table-editor-small update-name' id='Names_" + index + "__MiddleName' name='Names[" + index + "].MiddleName' type='text' value='' /> \ 
        </td> \ 
        <td> \ 
        <input class='table-editor-small update-name' data-val='true' data-val-required='Person Last Name Required' id='Names_" + index + "__LastName' name='Names[" + index + "].LastName' type='text' value='' /> \ 
        </td> \ 
        <td class='center'> \ 
        <input data-group='nameRadios' id='Names_" + index + "__IsPrimary' name='Names[" + index + "].IsPrimary' type='radio' value='True' /> \ 
        </td> \ 
        <td class='center'> \ 
        <input data-val='true' data-val-required='The Delete? field is required.' id='Names_" + index + "__ToDelete' name='Names[" + index + "].ToDelete' type='checkbox' value='true' /> \ 
        <input name='Names[" + index + "].ToDelete' type='hidden' value='false' /> \ 
        </td> \ 
       </tr>"); 
    $("#nameTable").append(newItem); 
} 
再次

,添加HTML是直接從已呈現由視圖中的項目,我只是換在index

+0

這很難破譯你在那裏做了什麼,並將它與我自己的任務聯繫起來哈哈 –

+0

對不起,我希望能夠爲您提供一些指導 – Jonesopolis