MVC中继承BaseViewModel的初始化变量在嵌套ViewModel中为空如何解决
问题根因
EnrollmentViewModel和它内部嵌套的LicenseViewModel是两个完全独立的类实例,虽然都继承了BaseViewModel,但二者的securitydetails属性是属于各自实例的成员,不会自动同步。- 你当前仅对
EnrollmentViewModel本身调用了UserManager.Assign()方法赋值,没有对嵌套的OfficialLicenseViewModel实例做同样的赋值操作,所以后者的securitydetails一直为空。
解决方案
修改EnrollmentManager中GetVM的逻辑,赋值完父实例后,手动给嵌套的LicenseViewModel也调用一次Assign方法即可:
public EnrollmentViewModel GetVM(.....) { var enrollmentVM = new EnrollmentViewModel(); // 保留原有给EnrollmentViewModel本身赋值的逻辑 UserManager.Assign(enrollmentVM); // 新增:给嵌套的LicenseViewModel也做属性赋值 UserManager.Assign(enrollmentVM.LicenseViewModel); return enrollmentVM; }
额外注意事项
你贴出的代码存在多处语法错误,排查问题前请先修正这些问题避免额外干扰:
UserManager的Assign方法、EnrollmentViewModel的构造函数的包裹符号错误,应该用大括号{}而不是小括号()EnrollmentManager、EnrollmentController缺少类声明的class关键字
内容的提问来源于stack exchange,提问作者Veronica
相关产品推荐
相关产品推荐

