如何创建一个通用类来处理输入文本字段中的所有输入

时间:2013-09-06 22:31:35

标签: c# asp.net-mvc

我有一个名为WorkflowsAndQueuesInitializerService的对象,它定义了工作流中的队列,并且在给定指定的调用结果的情况下,它也会路由下一步。我有一个继承自接口类的方法,该接口类名为CalculateDueDate,它从步骤实例和下一步时间跨度作为参数。我遇到的问题是,通常只是在给定来自输入文本字段的输入的情况下覆盖截止日期,而不需要跨多个类方法进行往返。我有一个名为NextStep的映射类,它有一个构造函数,它也需要一个截止日期。我想要实现的是在我的类表单实例中我只想从输入文本框中传递一个值并重新计算duedate而不用麻烦有没有更容易的方法来实现这个已经给出的信息?< / p>

public override void CollectFormValues(IFormValuesCollection values)
    {
        this.CalculatedShipDate = TypeConverter.ToNullableDateTime(values["CalculatedShipDate"]);
    }

上面是一个从HTTP POST检索表单值的方法。

这是一个临时表单实例,这意味着我的应用程序不会自动将表单的值提交回数据库。通常,CollectFormValues()仅将值保存到对象中,但不向数据库提交任何内容。但由于这是一种瞬态形式,因此该方法还负责将值保存回数据库。

此外,我还有一个类,用于检索应该用于计算下一个StepInstance的截止日期的类实例,如下所示:

public static IDueDateCalculator GetDueDateCalculator( string className )
    {
        if ( String.IsNullOrWhiteSpace( className ) )
            return new DefaultDueDateCalculator();

        Assembly assembly = typeof( IDueDateCalculator ).Assembly;
        Type calcType = assembly.GetType( className );
        return (IDueDateCalculator) Activator.CreateInstance( calcType );
    }

不确定我最好的解决方案是什么,因此我来到这里寻求任何反馈和/或帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您想要计算截止日期,但您也希望允许用户覆盖它。

所以这很容易。

这是VB,但你应该能够理解。

Class Something

    Private oDueDate As Nullable(Of DateTime) = Nothing

    Private Sub CalculateDueDate
        oDueDate = {some calculation between the date and timespans}
    End Sub



    Public Property DueDate As DateTime
        Get
            If (Nothing Is oDueDate) OrElse (Not oDueDate.HasValue) Then
                CalculateDueDate
            End If
            Return oDueDate
        End Get
        Set(value as DateTime)
            oDueDate = value
        End Set
    End Property

End Class