c# - ASP.NET MVC 3 自定义类型转换

标签 c# asp.net-mvc-3

现在,我定义了一个类:

public class Task
{
    public Guid TaskId { get; set; }
    public string TaskName { get; set; }

    [DataType(DataType.Time)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = @"{0:hh\:mm}")]
    public TimeSpan? TimeRequired { get; set; }
}

我想让用户也分别输入“2h”或“15m”,分别表示 2 小时或 15 分钟。有没有办法允许这些类型的自定义输入?我正在考虑只创建一个文本框,然后对该传入值进行自定义检查并将其正确转换为 TimeSpan。我不确定是否有某种类型的“CustomConverter”很像“CustomValidator”属性。

如果有什么不清楚的地方请告诉我。

提前致谢!

最佳答案

我想我终于找到了。根据Custom Model Binders您只需在 Global.asax 中添加一个自定义模型 Binder 即可。这是我所做的。我添加了一个类:

public class TimeSpanModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        ValueProviderResult value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        string attemptedValue = value.AttemptedValue;

        // Custom parsing and return the TimeSpan? here.
    }
}

然后我在 public void Application_Start()

中将这一行添加到我的 Global.asax.cs
ModelBinders.Binders.Add(typeof(TimeSpan?), new TimeSpanModelBinder());

像魅力一样工作!

关于c# - ASP.NET MVC 3 自定义类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861274/

相关文章:

c# - 分隔符分隔的字符串到 TreeView C#

c# - 创建我的第一个 HttpHandler - 不起作用

c# - 为什么我收到 NaN is not a valid value of Int32 错误?

C# 反射从接口(interface)获取具体类的静态属性

c# - Console.Writeline C# - 记录时丢失 STDOUT

json - 从 jquery 验证和 knockout 中失去理智

linux - 具有可选参数的 .NET mono MVC3 路由约束

c# - 附加到 IISExpress 的灾难性故障

c# - MVC3 : One controller, 多个路由

c# - 多对多关系基本示例 (MVC3)