• ASP.NET MVC: 使用自定义 ModelBinder


    这东西弄了大半天,第3种方法总是绑定失败。。发现绑错类型了= = 顺手记下这些,并把关键部分用红色字标明

    参考随笔:ASP.NET MVC: 使用自定义 ModelBinder 过滤敏感信息 

    实体:

    public class Site
    {
        
    /// <summary>
        
    /// 网站名称
        
    /// </summary>
        public string Name { getset; }

        
    /// <summary>
        
    /// 网站地址
        
    /// </summary>
        public string Url { getset; }

     }


    1、实现 IModelBinder 接口

    public class SiteModelBinder : IModelBinder
    {
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            HttpRequestBase request 
    = controllerContext.HttpContext.Request;

            
    if (string.Compare(request.HttpMethod, HttpVerbs.Post.ToString(), true== 0 && request.Form.Count > 0)
            {
                Site site 
    = IoC.Resolve<Site>();
                site.Name 
    = request.Form["Name"];
                site.Url 
    = request.Form["Url"];
                
    return site;
            }

            
    return null;
        }

    }  


    2、配置 

     方法一:直接在参数上使用

    public void Site([ModelBinder(typeof(SiteModelBinder))] Site site)  
    {
     

        return View();

     

     方法二:标记在 Model 上 



    /// </summary>
    /// 网站信息
    /// </summary>
    [System.Web.Mvc.ModelBinder(typeof(SiteModelBinder))]
    public class Site
    {
        
    /// <summary>
        
    /// 网站名称
        
    /// </summary>
        public string Name { getset; }

        
    /// <summary>
        
    /// 网站地址
        
    /// </summary>
        public string Url { getset; }

     }

    方法三:在 Global.asax.cs 文件中处理:

    绑定的类型是模型,参数是模型绑定器

    protected void Application_Start()

    {
        ModelBinders.Binders[typeof(Site)] = new SiteModelBinder();

    }
  • 相关阅读:
    CYPEESS USB3.0程序解读之---同步FIFO(slaveFifoSync)
    CYPEESS USB3.0程序解读之---GPIO
    USB 3.0 开发要点
    关于const声明一些东西
    __attribute__ 你知多少?
    char、signed char、unsigned char的区别总结。
    CentOS7安装配置SAMBA服务器
    linux版本FTP下载
    2021年1月29日
    2021年11月28日
  • 原文地址:https://www.cnblogs.com/cjnmy36723/p/2122843.html
Copyright © 2020-2023  润新知