现在,我定义了一个类:
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()
ModelBinders.Binders.Add(typeof(TimeSpan?), new TimeSpanModelBinder());
像魅力一样工作!
关于c# - ASP.NET MVC 3 自定义类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6861274/