2012-08-22 33 views
1

我創建了一個強類型視圖。我想要將IEnumerable Object或View中的數據傳遞給Controller。以下是我型號控制器視圖如何將IEnumerable對象或數據從視圖傳遞給控制器​​?

型號:

public class UserDetailsClass 
{ 
    public static FeedbackDatabaseDataContext context = new FeedbackDatabaseDataContext(); 
    public class Tablefields 
    { 
     [Key] 
     public int ID { get; set; } 

     [Required(ErrorMessage = "Email is required")]    
     public string EmailID { get; set; } 

     [Required(ErrorMessage="Password is required")] 
     public string Password { get; set; } 

     [Required(ErrorMessage = "First Name is required")] 
     public string FirstName { get; set; } 

     [Required(ErrorMessage = "Last Name is required")] 
     public string LastName { get; set; } 
    } 
    public static List<UserDetails> getalluser() 
    { 
     var lst = (from r in context.UserDetails select r); 
     return lst.ToList();   
    } 
} 

控制器

public ActionResult Test() 
    { 

     IList<UserDetailsClass.Tablefields> viewmodel = new List<UserDetailsClass.Tablefields>(); 
     var q = UserDetailsClass.getalluser().ToList(); 

     foreach (SQLOperation.Models.UserDetails item in q) 
     { 
      UserDetailsClass.Tablefields viewItem = new UserDetailsClass.Tablefields(); 

      viewItem.EmailID = item.Email; 
      viewItem.FirstName = item.FirstName; 
      viewItem.LastName = item.LastName; 
      viewItem.Password = item.Password; 

      viewmodel.Add(viewItem); 
     } 
     return View(viewmodel); 
    } 

    [HttpPost] 
    public ActionResult Test(IEnumerable<UserDetailsClass.Tablefields> items) 
    { 
     return View(); 
    } 

查看

@model IEnumerable<SQLOperation.Models.UserDetailsClass.Tablefields> 

@{ 
    ViewBag.Title = "Test"; 
} 

<h2>Test</h2> 

@using (Html.BeginForm()) 
{ 
<table> 
<tr> 
    <th> 
     EmailID 
    </th> 
    <th> 
     Password 
    </th> 
    <th> 
     FirstName 
    </th> 
    <th> 
     LastName 
    </th> 
    <th></th> 
</tr> 

@foreach (var item in Model) 
{ 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.EmailID) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Password) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.FirstName) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.LastName) 
    </td> 
    </tr> 
    } 
</table> 
    <input type="submit" value="submit" />  
} 

我沒有得到項目的任何值。當我設置它的斷點顯示它NULL項目 我完全糊塗了有關如何將值傳遞給控制器

謝謝 阿莫爾

回答

0
@for (int i = 0; i < Model.length; i ++) 
{ 
<tr> 
    <td> 
     @Html.DisplayFor(model => Model[i].EmailID) 
    </td> 
    <td> 
     @Html.DisplayFor(model => Model[i].Password) 
    </td> 
    <td> 
      @Html.DisplayFor(model => Model[i].FirstName) 
    </td> 
    <td> 
     @Html.DisplayFor(model => Model[i].LastName) 
    </td> 
    </tr> 
    } 
</table> 
     <input type="submit" value="submit" />  
} 
+0

謝謝,我在我看來有價值,但我無法將它傳遞給我的控制器。在我的控制器中我得到NULL – Amol

2

代替@Html.DisplayFor使用@Html.EditorFor,數據綁定的方式,將在您的形式發生。

此外,由於使用的是收集你需要遍歷您的領域(例如簡化):

    @for (int row = 0; row < Model.Count; row++) 
        { 
          @Html.EditorFor(x => x[row].FirstName) 

        } 
+0

謝謝你, 我已經改變Html.DisplayFor到Html.EditorFor,但我不能讓控制器中的值。它提供NULL – Amol

+0

編輯以反映您要發送收藏。 – Eduard

+0

我得到上面的錯誤x => x [行] .FirstName這就是爲什麼我改變這個如下。但我仍然沒有得到在控制器 @for任何值(INT行= 0;行 x.ElementAt(行) .FirstName) } – Amol

相關問題