2017-06-03 22 views
0

我正在使用小表單填寫我的mvc應用程序。表單經過驗證,但在調試時發現我的字段爲空。爲什麼?
我試着調試過很多次,但我仍然看不到我的錯誤,無論我做什麼,它仍然在驗證後爲空。驗證後的模型中爲空所需的參數

控制器:

public ActionResult ViewHomework(ViewHomeworkViewModel value) 
     { 
      var model = new ViewHomeworkViewModel(); 
      model.subject_id = value.subject_id; 
      ClassDeclarationsDBEntities1 entities = new ClassDeclarationsDBEntities1(); 
      var subj = entities.Subjects 
        .Where(b => b.class_id == model.subject_id) 
        .FirstOrDefault(); 
      model.hw2 = entities.Homeworks2.ToList(); 
      model.users = entities.Users.ToList(); 
      model.hw_sets = new List<Homeworks2>(); 
      List<int?> ids = new List<int?>(); 
      foreach (var hw in model.hw2) 
      { 
       ids.Add(hw.homework_id); 
      } 
      ids = ids.Distinct().ToList(); 

      foreach (var id in ids) 
      { 
       foreach (var h in model.hw2) 
       { 
        if (h.homework_id == id) 
        { 
         model.hw_sets.Add(h); 
         break; 
        } 
       } 
      } 
       if (ModelState.IsValid) 
      { 
       var deadl = entities.Homeworks2 
        .Where(b => b.deadline == model.deadline) 
        .FirstOrDefault(); 
       int? id = deadl.homework_id; 
       return RedirectToAction("ViewHomeworkView", "Account", new { hw_id = id }); 
      } 
      return View(model); 
     } 

和視圖是在這裏:

@using Microsoft.Owin.Security 
@model ClassDeclarationsThsesis.Models.ViewHomeworkViewModel 
@{ 
    ViewBag.Title = "Pick the homework"; 
} 

<h2>@ViewBag.Title.</h2> 
<h3>Items marked with * are obligatory.</h3> 

@foreach (var user in Model.users) 
{ 
    if (user.email.Replace(" ", String.Empty) == HttpContext.Current.User.Identity.Name) 
    { 
     if (user.user_type.Replace(" ", String.Empty) == 3.ToString() || user.user_type.Replace(" ", String.Empty) == 2.ToString()) 

     { using (Html.BeginForm("ViewHomework", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
      { 
       @Html.AntiForgeryToken() 

       <hr /> 
       @Html.ValidationSummary("", new { @class = "text-danger" }) 
       <div class="form-group"> 
        @{ 
         List<SelectListItem> listItems1 = new List<SelectListItem>(); 
        } 


        @foreach (var h in Model.hw_sets) 
        { 
         listItems1.Add(new SelectListItem 
         { 
          Text = h.deadline, 
          Value = h.deadline, 
          Selected = true 
         }); 
        } 

        @Html.LabelFor(m => m.deadline, new { @class = "col-md-2 control-label" }) 
        <div class="col-md-10"> 
         @Html.DropDownListFor(m => m.deadline, listItems1, new { @class = "form-control" }) 
        </div> 
       </div> 

       <div class="form-group"> 
        <div class="col-md-offset-2 col-md-10"> 
         <input type="submit" class="btn btn-default" value="Submit" /> 
        </div> 
       </div> 

          } 
         } 
         if (user.user_type.Replace(" ", String.Empty) == 1.ToString()) 
         { 
          <p>This window is only accessible to teachers.</p> 
           } 

          } 
         } 
+0

哪個字段?你如何提交你的數據? – User3250

+0

@ User3250 deadine字段。用戶從下拉列表中選擇日期並點擊按鈕提交。 – jjj21

+1

'var model = new ViewHomeworkViewModel();'您正在創建一個不使用提交的對象'value'的新模型。 – User3250

回答

1

您使用的所謂價值視圖模型,但隨後試圖從視圖模型的不同實例來讀取。請嘗試閱讀'價值'觀點模型。

+0

已在評論中提及:) – User3250