2

強く型付けされたビューを作成しました。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" />     
}

itemsに値がありませんでした。ブレークポイントを設定すると、項目にNULLが表示され、 controller に値を渡す方法について完全に混乱しています。

ありがとう、アモル

4

2 に答える 2

1

@Html.DisplayForuseの代わりに@Html.EditorFor、その方法でデータバインディングがフォームで行われます。

また、コレクションを使用しているため、フィールドを反復する必要があります (単純化された例):

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

                    }
于 2012-08-22T13:20:47.033 に答える