C# 模型属性在另一个模型中无法访问
我试图通过继承C# 模型属性在另一个模型中无法访问,c#,asp.net-mvc,class,model-view-controller,C#,Asp.net Mvc,Class,Model View Controller,我试图通过继承IValidatableObject访问当前模型(PropertyDetails\u Master)中另一个模型的(Property\u Master)属性,以进行条件验证。但当我创建另一个模型的对象(属性的对象)时,它返回属性的空值。如何获取另一个模型的属性值 在我的代码中 public class Property_Master : IValidatableObject { //Another Properties [DisplayName("Property Typ
IValidatableObject
访问当前模型(PropertyDetails\u Master
)中另一个模型的(Property\u Master
)属性,以进行条件验证。但当我创建另一个模型的对象(属性的对象)时,它返回属性的空值。如何获取另一个模型的属性值
在我的代码中
public class Property_Master : IValidatableObject
{
//Another Properties
[DisplayName("Property Type")]
[Required(ErrorMessage = "* Please Select Property Type.")]
public string PR_PropertyType
{
get { return strPropertyType;}
set { strPropertyType=value;}
}
}
在另一个模型中,我想使用上面的PR\u PropertyType
来检查PropertyDetails\u Master
模型中的条件
public class PropertyDetails_Master : IValidatableObject
{
Property_Master pm = new Property_Master();
[DisplayName("Flat No.")]
public string PR_FlatNo { get; set; }
[DisplayName("Floor No.")]
public Nullable<int> PR_Floor { get; set; }
[DisplayName("No. Of Bedrooms")]
[Required(ErrorMessage = "* Please Enter No. Of Bedrooms.")]
public Nullable<int> PD_Bedrooms { get; set; }
[DisplayName("No. Of Bathrooms")]
[Required(ErrorMessage = "* Please Enter No. Of Bathrooms.")]
public Nullable<int> PD_Bathrooms { get; set; }
if (pm.PR_PropertyType=="Flat")
{
if (this.PR_FlatNo == "" || this.PR_FlatNo == null)
{
yield return new ValidationResult("* Flat No. Should Filled", new[] { "PR_FlatNo" });
}
if (this.PR_Floor == 0 || this.PR_Floor == null)
{
yield return new ValidationResult("* Floor No. Should Filled", new[] { "PR_Floor" });
}
}
}
公共类PropertyDetails\u主控:IValidatableObject
{
Property_Master pm=新属性_Master();
[显示器名称(“单元号”)
公共字符串PR_FlatNo{get;set;}
[显示名称(“楼层编号”)
公共可空PR_Floor{get;set;}
[显示名称(“卧室数量”)]
[必需(ErrorMessage=“*请输入卧室数量。”)]
公共可为空的PD_卧室{get;set;}
[显示名称(“浴室数量”)]
[必需(ErrorMessage=“*请输入浴室数量。”)]
公共可为空的PD_浴室{get;set;}
如果(pm.PR_PropertyType==“平面”)
{
if(this.PR_FlatNo==“”| | this.PR_FlatNo==null)
{
产生返回新的ValidationResult(“*单位编号应填写”,新[]{“PR_单位编号”});
}
if(this.PR_Floor==0 | | this.PR_Floor==null)
{
产生返回新的ValidationResult(“*应填写楼层编号”,新[]{”PR_Floor“});
}
}
}
现在在上面的代码中,当我在
pm.PR_PropertyType
上使用调试器检查时,它返回null。因此,我如何访问propertydeails\u Master
类中的PR\u PropertyType
属性?因为pm
是property\u Master
的新实例,我们不能使用pm
访问PR\u PropertyType
,当然不能。您可以将pm
设置为新实例,而不是现有实例。不清楚您想要比较的现有实例在哪里。您的视图是否同时包含propertydeails\u Master
和Property\u Master
?是的,我的视图同时包含propertydeails\u Master
和Property\u Master
。如何使用现有实例?请使用包含所需所有属性的视图模型。并使用实现IClientValidatable
的条件验证属性(例如,一个或类似的属性),而不是IValidatableObject
,以便同时获得客户端和服务器端验证