复杂模型绑定

原创 Laughing  2017-10-28 21:07  阅读 384 次 评论 0 条

上一章节中,我们介绍了

,但是对于简单的模型绑定,我们都是使用的弱类型,为了使用强类型引用,我们这里介绍复杂模型绑定。

创建实体类
  1. using System;  
  2. namespace NetCoreStudy.WebUI.Entity  
  3. {  
  4.     public class Person  
  5.     {  
  6.         public string Name { getset; }  
  7.         public int Age { getset; }  
  8.     }  
  9. }  
前台代码
  1. <div>  
  2. @using(Html.BeginForm("PersonModelBinding","VtoC","POST")){  
  3.         <P>  
  4.         姓名:<input type="text" name="Name"/>  
  5.         </P>  
  6.     <p>  
  7.     年龄:<input type="text" name="Age"/>  
  8.     </p>  
  9.     <p><input type="submit" value="提交"/></p>  
  10.     }  
  11. </div>  
  12. <p>  
  13. Your Name:@ViewBag.Name  
  14. </p>  
  15. <p>  
  16. Your Age:@ViewBag.Age  
  17. </p>  
控制器代码
  1. public ActionResult PersonModelBinding(Person person){  
  2.             ViewBag.Name = person.Name;  
  3.             ViewBag.Age = person.Age;  
  4.             return View();  
  5.         }  

如果需要传递多个参数,我们可以通过控制器参数名.属性名的方式在前台进行绑定

前台代码PersonModelViewBinding.cshtml
  1. <div>  
  2. @using(Html.BeginForm("MultiPersonModelBinding","VtoC","POST")){  
  3.     <h2>男</h2>  
  4.         <P>  
  5.         姓名:<input type="text" name="man.Name"/>  
  6.         </P>  
  7.     <p>  
  8.     年龄:<input type="text" name="man.Age"/>  
  9.     </p>  
  10.   
  11.     <h2>女</h2>  
  12.     <h2>男</h2>  
  13.         <P>  
  14.         姓名:<input type="text" name="woman.Name"/>  
  15.         </P>  
  16.     <p>  
  17.     年龄:<input type="text" name="woman.Age"/>  
  18.     </p>  
  19.     <p><input type="submit" value="提交"/></p>  
  20.     }  
  21. </div>  
  22. <h2>男</h2>  
  23. <p>  
  24. Your Name:@ViewBag.ManName  
  25. </p>  
  26. <p>  
  27. Your Age:@ViewBag.ManAge  
  28. </p>  
  29. <h2>女</h2>  
  30. <p>  
  31. Your Name:@ViewBag.WomanName  
  32. </p>  
  33. <p>  
  34. Your Age:@ViewBag.WomanAge  
  35. </p>  
控制器代码
  1. public ActionResult MultiPersonModelBinding(Person man,Person woman){  
  2.             ViewBag.ManName = man.Name;  
  3.             ViewBag.ManAge = man.Age;  
  4.             ViewBag.WomanName = woman.Name;  
  5.             ViewBag.WomanAge = woman.Age;  
  6.             return View();  
  7.         }  

出了上面的方式之外,我们也可以通过将多个参数放到一个Model里面的方式进行实现,我们可以先定义一个新的实体类

  1. using System;  
  2. namespace NetCoreStudy.WebUI.Entity  
  3. {  
  4.     public class PersonModelView  
  5.     {  
  6.         public Person Man { getset; }  
  7.         public Person Woman { getset; }  
  8.     }  
  9. }  
前台代码
  1. @using(Html.BeginForm("PersonModelViewBinding","VtoC","POST")){  
  2.     <h2>男</h2>  
  3.         <P>  
  4.         姓名:<input type="text" name="person.man.Name"/>  
  5.         </P>  
  6.     <p>  
  7.     年龄:<input type="text" name="person.man.Age"/>  
  8.     </p>  
  9.   
  10.     <h2>女</h2>  
  11.     <h2>男</h2>  
  12.         <P>  
  13.         姓名:<input type="text" name="person.woman.Name"/>  
  14.         </P>  
  15.     <p>  
  16.     年龄:<input type="text" name="person.woman.Age"/>  
  17.     </p>  
  18.     <p><input type="submit" value="提交"/></p>  
  19.     }  
前台代码ShowModelViewBinding.cshtml
  1. @model NetCoreStudy.WebUI.Entity.PersonModelView  
  2.   
  3. <h2>男</h2>  
  4. <p>  
  5. Your Name:@Model.Man.Name  
  6. </p>  
  7. <p>  
  8. Your Age:@Model.Man.Age  
  9. </p>  
  10. <h2>女</h2>  
  11. <p>  
  12. Your Name:@Model.Woman.Name  
  13. </p>  
  14. <p>  
  15. Your Age:@Model.Woman.Age  
  16. </p>  
控制器代码
  1. public ActionResult PersonModelViewBinding(){  
  2.             return View();  
  3.         }  
  4.   
  5.         [HttpPost]  
  6.         public ActionResult PersonModelViewBinding(PersonModelView person){  
  7.             return View("ShowModelViewBinding",person);  
  8.         }  
本文地址:https://www.lisen.me/complex-model-binding.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情