2016-10-20 1 views
0

MVCには、無作為に生成されたユーザーを追加するボタンがあり、各ユーザーがそれらを削除するための削除ボタンがあります。リスト。 コントローラからビューに送信し、1人のユーザーを生成します。もう1つ追加しようとすると、ただ変更されます。私はそれがリスト内の項目を削除すると思います。 リストをコントローラに戻すことを試みていますが、動作しません。 誰かが助けてくれますか?ViewからControllerへの送信リストの結果はnull MVCのリスト

マイモデル:

public class UsersClass 
{ 
    public int Code { get; set; } 
    public string Name { get; set; } 

    public UsersClass(int Code, string Name) 
    { 
     this.Code = Code; 
     this.Name = Name; 
    } 
} 

マイコントローラ:

List<UsersClass> UsersList = new List<UsersClass>(); 
public ActionResult Index() 
{ 
    return View(UsersList); 
} 

[HttpPost] 
    public ActionResult AddUser(List<UsersClass> UsersList) 
    { 
     if (UsersList == null) 
     { 
      int a = 123; 
      UsersList = new List<UsersClass>(); 
     } 
     Random generator = new Random(); 

     string[] vez_nevek = new string[10] { "Kovács", "Szekeres", "Király", "Szabó", "Vicha", "Kozma", "Ferencz", "Pócsi", "Tinka", "Horváth" }; 
     string[] ker_nevek = new string[10] { "Lajos", "Barnabás", "Róbert", "Balázs", "János", "Béla", "Petra", "Anna", "Ferenc", "Attila" }; 

     string vezetek_nev = vez_nevek[generator.Next(vez_nevek.Length)]; 
     string kereszt_nev = ker_nevek[generator.Next(ker_nevek.Length)]; 

     UsersList.Add(new UsersClass(generator.Next(100000, 999999), vezetek_nev + " " + kereszt_nev)); 

     return View("~/Views/UserManagement/Index.cshtml", UsersList); 
    } 

し、ユーザを追加するには、私の見る:

<h2>User Management</h2> 

@using (Html.BeginForm("AddUser", "UserManagement", FormMethod.Post)) 
{ 
    int index = 0; 
    foreach (var item in Model) 
    { 
     Html.Hidden("item[" + index + "].Code", item.Code); 
     Html.TextBox("item[" + index + "].Name", item.Name); 
     index++; 
    } 
    <input type="submit" value="Add User" /> 
} 
+0

あなたのモデルと関係がなく、決してそれにバインドされない 'name'属性を生成しようとすると、表示されたコードは' @ 'に' @ 'がないため、 Html.Hidden(...) ')。 @ Html.TextBoxFor(m => m [i])を使用して、ビューを正しく生成します。 .Name)} '。その後、[この回答]を参照してください(http://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308) –

答えて

-1

あなたは

同じ同じすべての入力に名前を付ける必要があります
@Html.TextBox("UsersList", item.Name); 

- アクションメソッド

public ActionResult AddUser(List<string> UsersList){ 

}

+0

nullリスト @using(Html.BeginForm( "は、AddUser"、 "UserManagement"、FormMethod.Post)) {foreachの(モデルにおけるVAR項目) {@ Html.Hidden( "USERSLIST"、item.Code)。 @ Html.Hidden( "UsersList"、item.Name); } } –

+0

まだnullリストのコントローラに戻ります。 私は使用しました: @ HTML。隠し( "UsersList"、item.Code); @ Html.Hidden( "UsersList"、item.Name); –

0

あなたHttpPostは、AddUserがリストについて知っdoesntの方法。ユーザーのリストを含むViewModelを作成する必要があります。 ViewModelは、ViewとControllerの間でデータをやりとりするための1つの方法です。ユーザーがページ上にモデルを編集し、そのコントローラのHttpPostメソッドを保存/削除するをクリックすると、そのモデルが呼び出されます。モデルであるHttpPostメソッドでパラメータを作成します。ビューはViewModelを認識し、それをコントローラに送信します。以下のコードを参照してください。

のViewModel:

public class UserManageViewModel 
    { 
     public List<UsersClass> users {get; set;} 
    } 

ビュー:あなたのビューが持っているか、そうでなければ文句を言わないコントローラに送信するかを知るために ライン@model UserManageViewModelが重要です。

@model UserManageViewModel 
<h2>User Management</h2> 

@using (Html.BeginForm("AddUser", "UserManagement", FormMethod.Post)) 
{ 
    int index = 0; 
    foreach (var item in Model.users) 
    { 
     Html.Hidden("item[" + index + "].Code", item.Code); 
     Html.TextBox("item[" + index + "].Name", item.Name); 
     index++; 
    } 
    <input type="submit" value="Add User" /> 
} 

コントローラー:

public ActionResult Index() 
{ 
    UserManageViewModel model = new UserManageViewModel(); 
    model.users = new List<UsersClass>(); 
    return View(model); 
} 

[HttpPost] 
    public ActionResult AddUser(UserManageViewModel model) 
    { 
     if (model.users.IsEmpty() || model.users == null) 
     { 
      int a = 123; 
      model.users = new List<UsersClass>(); 
     } 
     Random generator = new Random(); 

     string[] vez_nevek = new string[10] { "Kovács", "Szekeres", "Király", "Szabó", "Vicha", "Kozma", "Ferencz", "Pócsi", "Tinka", "Horváth" }; 
     string[] ker_nevek = new string[10] { "Lajos", "Barnabás", "Róbert", "Balázs", "János", "Béla", "Petra", "Anna", "Ferenc", "Attila" }; 

     string vezetek_nev = vez_nevek[generator.Next(vez_nevek.Length)]; 
     string kereszt_nev = ker_nevek[generator.Next(ker_nevek.Length)]; 

     model.users.Add(new UsersClass(generator.Next(100000, 999999), vezetek_nev + " " + kereszt_nev)); 

     return View(model); 
    } 

・ホープ、このことができます。乾杯::

関連する問題