Asp.net mvc 3 使用好友类时的mvc3验证
我正在处理一个mvc3应用程序,在让验证按我所希望的方式工作时遇到了一些问题 应用程序正在为模型使用buddy类。(这是我过去没有用过的东西,我有点困惑为什么要用它们……无论如何) 我想添加必填字段,以确保提交的数据正确无误。我已尝试将必填字段添加到buddy类 当我提交表单时,不会进行客户端验证,并且调试器会进入实体框架生成的代码中。以下是包含空值的字段导致无效的投诉。如果我一步一步地完成所有这些,它最终会到达控制器,在那里我的If(ModelState.IsValid)显示为false 我打开了客户端验证 我是要在buddy类级别还是视图模型级别应用数据验证 另一个问题是为什么要使用好友类?在我看来,他们似乎把事情复杂化了 更新添加了一个buddy类的示例Asp.net mvc 3 使用好友类时的mvc3验证,asp.net-mvc-3,Asp.net Mvc 3,我正在处理一个mvc3应用程序,在让验证按我所希望的方式工作时遇到了一些问题 应用程序正在为模型使用buddy类。(这是我过去没有用过的东西,我有点困惑为什么要用它们……无论如何) 我想添加必填字段,以确保提交的数据正确无误。我已尝试将必填字段添加到buddy类 当我提交表单时,不会进行客户端验证,并且调试器会进入实体框架生成的代码中。以下是包含空值的字段导致无效的投诉。如果我一步一步地完成所有这些,它最终会到达控制器,在那里我的If(ModelState.IsValid)显示为false 我打
[MetadataType(typeof (CustomerMetaData))]
public partial class Customer
{
public string Priorty
{
get
{
var desc = (Priority) Priority;
return desc.ToString().Replace('_', ' ');
}
}
internal class CustomerMetaData
{
[Required]
[DisplayName("Priorty")]
public string Priorty { get; set; }
Buddy类是元数据类,用于在您无法控制原始类(即无法编辑它)时放置数据注释属性。典型的情况是类由类似ORM的实体框架生成
//Can't edit this class
public partial class YourClass{
public string SomeField {get; set;}
}
//Add a partial class
[MetadataType(typeof(YourClassMetadata))]
public partial class YourClass{
}
//And a metadata class
public class YourClassMetadata
{
[Required(ErrorMessage = "Some Field is required")]
public string SomeField {get; set;}
}
是否确实有[元数据类型(typeof(yourclassmatadata))]
有关buddy类和buddy类的详细信息buddy类是元数据类,用于在您无法控制原始类(即无法编辑它)时放置数据注释属性。典型的情况是类由类似ORM的实体框架生成
//Can't edit this class
public partial class YourClass{
public string SomeField {get; set;}
}
//Add a partial class
[MetadataType(typeof(YourClassMetadata))]
public partial class YourClass{
}
//And a metadata class
public class YourClassMetadata
{
[Required(ErrorMessage = "Some Field is required")]
public string SomeField {get; set;}
}
是否确实有[元数据类型(typeof(yourclassmatadata))]
有关好友类的更多信息和当无法向实体类添加元数据时,例如当模型由ORM工具自动生成时,通常会使用好友类。在这种情况下,您应用的任何元数据都将丢失 因此,原始(自动生成)类将被定义为部分类:
public partial class Customer
{
public string Priority { get; set; }
}
然后生成好友类来添加元数据
[MetadataType(typeof(CustomerMetaData))]
public partial class Customer
{
}
internal class CustomerMetaData
{
[Required]
public string Priority { get; set; }
}
然后将Customer类传递给将设置优先级的视图
在您的情况下,我不确定您是否只有一个或两个部分类(因为另一个未显示,但请提供,如果有)。我很想知道您是如何从客户那里获得优先级信息的,因为我想知道这是否与您如何使用
ModelState.IsValid
有关?我询问的原因是没有在Priority属性上声明set accessor,所以我想知道如何从视图中设置它以报告它无效?当无法将元数据添加到实体类时,例如当ORM工具自动生成模型时,通常会使用buddy类。在这种情况下,您应用的任何元数据都将丢失
因此,原始(自动生成)类将被定义为部分类:
public partial class Customer
{
public string Priority { get; set; }
}
然后生成好友类来添加元数据
[MetadataType(typeof(CustomerMetaData))]
public partial class Customer
{
}
internal class CustomerMetaData
{
[Required]
public string Priority { get; set; }
}
然后将Customer类传递给将设置优先级的视图
在您的情况下,我不确定您是否只有一个或两个部分类(因为另一个未显示,但请提供,如果有)。我很想知道您是如何从客户那里获得优先级信息的,因为我想知道这是否与您如何使用
ModelState.IsValid
有关?我询问的原因是没有在Priority属性上声明set accessor,所以我想知道如何从视图中设置它以报告它无效?当无法将元数据添加到实体类时,例如当模型由WCF数据协定自动生成时,您也会使用buddy类。当无法将元数据添加到实体类时,例如当模型由WCF数据契约自动生成时,也将使用buddy类。Hi Amit,谢谢。是的,它已被使用。我已经用一个例子更新了我的帖子。为了确保所有其他东西都正确排列,在类(和视图)中添加一个int字段,看看MVC是否抛出并出错。如果没有,验证本身就有问题。你好,阿米特,谢谢。是的,它已经被使用了。我已经用一个例子更新了我的帖子。为了确保所有其他东西都正确排列,在类(和视图)中添加一个int字段,看看MVC是否抛出并出错。如果不是,验证本身就有问题。