我新建了一个mvc解决方案,然后把home控制器改成下面这样.....
t1用 string id,string name 接收参数正常
t用 ViewModel1 vm 接收,vm.id,vm.name都是空....
1 namespace WebApplication3.Controllers 2 { 3 public class ViewModel1 4 { 5 public string id; 6 public string name; 7 8 } 9 public class HomeController : Controller 10 { 11 public string t(ViewModel1 vm) 12 { 13 if (ModelState.IsValid) 14 { 15 return vm.id + vm.name; //使用 /home/t?id=1&name=2 访问,显示空 16 } 17 return "error"; 18 19 } 20 public string t1(string id,string name) 21 { 22 return id + name; //使用 /home/t1?id=1&name=2 访问,显示正常 23 } 24 25 } 26 }
1.你的t方法用ViewModel1,但是你ViewModel1里面的属性都没有get、set咋赋值取值?
2.检查一下页面上的name是否对应。
唉..又是一个白痴的错误.....ViewModel1里的属性竟然没写{ get; set; }
新手伤不起啊
建议看下DefaultModerBinder实现