如何通过IEnumerable的对象或数据从视图到控制器?(How to pass IEnumera

2019-09-21 11:48发布

我创建了一个强类型视图。 我想通过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在我完全糊涂了有关项目如何将值传递给控制器

谢谢你,阿莫尔

Answer 1:

 @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" />     
 }


Answer 2:

相反的@Html.DisplayFor使用@Html.EditorFor ,数据绑定的方式,将在您的形式发生。

此外,由于使用的是收集你需要遍历您的领域(例如简化):

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

                    }


文章来源: How to pass IEnumerable object or data from view to controller?