2017-01-04 130 views
1

我正在制作我的MVC应用程序。我打开我的观点与预定义的参数是这样的:在视图中传递MVC数据

return RedirectToAction("PickGroupForHomework", "Account", new {subject_id = id, qty=model.qty }); 

而这个工作正常,数据subject_idqty正确传递。但是,我的视图PickGroupForHomework包含一个要填充的表单,然后进行验证。如果输入无效,则窗口只需重新加载前面视图中定义的数据subject_idqty。我这样做是这样的:

public ActionResult PickGroupForHomework(PickGroupForHomeworkViewModel model) 
     { 
      ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2(); 
      model.groups = entities.Groups.ToList(); 
      model.users = entities.Users.ToList(); 
      int id = model.subject_id; 
      var subj = entities.Subjects 
        .Where(b => b.class_id == model.subject_id) 
        .FirstOrDefault(); 
      if (subj != null) 
      { 
       model.subject_name = subj.name; 
      } 
      if (ModelState.IsValid) 
      { 

      } 
      else 
      { 
       return View(model); 
      } 
      return View(model); 

     } 

但结果URL不包含我需要的数据,但只是一个普通的看法。我该如何做对?

+0

何不你不使用不显眼的验证。这意味着大多数问题都会被客户端发现 – Liam

+0

你也可以显示视图吗? – user7351608

+0

@KwekuReginaldWade查看编辑 – jjj21

回答

0

为了让您的WEP应用工作,你将需要两个动作,一个设置模型弥补了查看和另一个实际做的工作后,保存您的数据:

public ActionResult PickGroupForHomework(int subject_id, int qty) 
    { 
     //Initialize your model here. Below is just an example. 
     ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2(); 

     PickGroupForHomeworkViewModel model = new PickGroupForHomeworkViewModel(); 

     model.groups = entities.Groups.ToList(); 
     model.users = entities.Users.ToList(); 

     model.subject_id = subject_id; 
     model.qty = qty; 

     return View("PickGroupForHomework", model); 
    } 

    [HttpPost] 
    public ActionResult PickGroupForHomework(PickGroupForHomeworkViewModel model) 
    { 
     ClassDeclarationsDBEntities2 entities = new ClassDeclarationsDBEntities2(); 

     int id = model.subject_id; 

     var subj = entities.Subjects 
       .Where(b => b.class_id == model.subject_id) 
       .FirstOrDefault(); 

     if (subj != null) 
     { 
      model.subject_name = subj.name; 
     } 
     if (ModelState.IsValid) 
     { 
      //Save to database 
      [code goes here] 

      //return to a View to show your results 
      return View("[Your view to see the results]") 
     } 

     //Model Validation did not pass 
     //or exception occurred go back to View 
     return View(model); 
    } 
+1

这不能解决问题 – jjj21

+0

调试时代码采用什么路径? – user7351608

+1

当我打开它从不同的窗口移动,它是'http:// localhost:3449/Account/PickGroupForHomework?subject_id = 2&qty = 4',但是,然后,错误的验证后,它得到'http:// localhost:3449/Account/PickGroupForHomework' – jjj21