微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在MVC中创建自定义字符串对象模型绑定?

如何解决如何在MVC中创建自定义字符串对象模型绑定?

| 我创建了一个自定义字符串对象,但是当我将其回发到服务器时,它没有模型绑定。我在课堂上缺少某种属性吗? 这是下面的自定义字符串类:
public class EMailAddress
{
    private string _address;
    public EMailAddress(string address)
    {
        _address = address;
    }
    public static implicit operator EMailAddress(string address)
    {
        if (address == null)
            return null;
        return new EMailAddress(address);
    }
}
    

解决方法

为了使对象被默认的模型绑定器正确绑定,它必须具有默认的无参数构造函数:
public class EMailAddress
{
    public string Address { get; set; }
}
如果要使用模型作为显示的模型,则需要编写一个自定义模型绑定程序来处理转换:
public class EmailModelBinder : DefaultModelBinder
{
    public override object BindModel(
        ControllerContext controllerContext,ModelBindingContext bindingContext
    )
    {
        var email = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
        if (email != null)
        {
            return new EMailAddress(email.AttemptedValue);
        }
        return new EMailAddress(string.Empty);
    }
}
将在
Application_Start
中注册:
ModelBinders.Binders.Add(typeof(EMailAddress),new EmailModelBinder());
并像这样使用:
public class HomeController : Controller
{
    public ActionResult Index(EMailAddress email)
    {
        return View();
    }
}
现在,当您查询“ 6”时,应该正确绑定操作参数。 现在的问题是:当您拥有一个我最初展示的视图模型时,您真的要编写所有这些代码吗?     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。