1

我在 MVC 控制器中。我有一个类,我希望 MVC 以与处理 aGuid或 aDateTime完全相同的方式处理此类的值 那是:

  • 当将类类型的实例写入表单时,它是单个格式化字符串,而不是单独的字段。
  • 当一个值(以字符串形式)被回发时,它会自动转换回该类的一个实例。

从概念上讲,实现这一点应该只需要每个方向的转换函数。假设我们有一个或多个对象实现了这个接口:

namespace SomeExample
{
    public interface SomeStringConversion<T>
    {
        T ConvertFromString(string str);
        string ConvertToString(T obj);
    }
}

// Example: What such a class for Guid might look like
namespace SomeExample
{
    public class SomeGuidStringConversion : SomeStringConversion<Guid>
    {
        public Guid ConvertFromString(string str)
        {
            return Guid.Parse(str);
        }

        public string ConvertToString(Guid g)
        {
            return g.ToString();
        }
    }
}

并且说我们不在乎验证超出接受或拒绝的内容ConvertFromString()

SomeStringConversion<T>从集合到使用它们的控制器的最直接路径是什么(即,模型绑定的无关特征尽可能少的无关细节) ?

编辑:我做开发人员已经有一段时间了,但在 MVC 方面我是新鲜人。我需要一个可以向后工作的代码示例。高级别的描述不会有太大帮助。

4

1 回答 1

0

我能看到的最直接的实现方式是使用自定义模型绑定器。

binder 检查要绑定的模型类型是否实现了SomeStringConversion<T>接口,如果实现了,则尝试将模型绑定到传入的字符串值。如果没有,它只是遵循DefaultModelBinder默认的模型绑定过程。

如果字符串结构格式正确,您可以实现 aValueProvider以将值提供给模型绑定器以进行模型绑定。

于 2013-03-11T19:40:58.210 回答