在MVC中编写自定义属性方面需要帮助

时间:2012-05-02 11:42:18

标签: c# wpf asp.net-mvc

我必须使用MVC模式编写自定义属性来检查依赖属性。我正在使用System.ComponentModel.DataAnnotations来检查必填字段。 我的WPF应用程序包含listview控件。当第一次加载视图时,以模态类编写的所有属性都会填充到列表视图中。 我正在提供功能,用户可以在listview中包含/排除新属性。但是,我不希望允许用户排除其他属性所依赖的属性。

例如,如果securitynumber属性取决于employeename属性。在排除employeesename的同时,我想显示验证信息“securitynumber取决于雇员姓名,因此不能排除雇员名称”

我需要帮助写作和使用自定义属性,例如

[Dependencyon("Employeename")]
public object securitynumber { get ;set ;}

并希望在任何需要的地方获得“Dependencyon”的价值。

2 个答案:

答案 0 :(得分:2)

您有三种选择:

A)您可以使用CustomValidationAttribute并提供自定义构建的验证器。

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute.validatortype(v=vs.95).aspx

B)您可以创建一个继承自ValidationAttribute的类。

http://msdn.microsoft.com/en-us/library/cc668224.aspx

C)如果您只想在MVC Action上执行此操作,则可以根据gordatron的响应创建ActionFilterAttribute。

答案 1 :(得分:1)

我猜你想要创建一个自定义过滤器..它已经有一段时间但是从记忆中我认为它会是这样的:

public class Dependencyon : ActionFilterAttribute {

    string field;

    public Dependencyon (string field){
        this.field = field;
    }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        //check whether field is populated and redirect if not?    
    }
}

这是ActionFilters的首发:

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs

(我不记得这些构造函数参数的详细信息,所以我可能会离开..抱歉,但我想它不会花很长时间尝试)