当前位置: 主页 > 编程知识 > net编程 > ASP.NET应用: 在MVC中如何进行表的增删改操作

ASP.NET应用: 在MVC中如何进行表的增删改操作

时间:2009-12-10来源:站长资讯网 点击:

这个typeof(TModel)造成了只会更新声明类型中有的属性,把它换成model.GetType()就可以解决问题了,我扩这的这个方法如下

public static class ControllerExtension
    {
        
/// <summary>
        
/// 更新时是否按照当前类型进行更新
        
/// </summary>
        
/// <typeparam name="TModel"></typeparam>
        
/// <param name="controller"></param>
        
/// <param name="model"></param>
        
/// <param name="isEx"></param>
        public static void UpdateModel<TModel>(this Controller controller, TModel model, bool isExtension) where TModel : class
        {
            
if (isExtension)
            {
                Predicate
<string> propertyFilter = propertyName => IsPropertyAllowed(propertyName, nullnull);
                IModelBinder binder 
= ModelBinders.Binders.GetBinder(model.GetType());

                ModelBindingContext bindingContext 
= new ModelBindingContext()
                {
                    Model 
= model,
                    ModelName 
= null,
                    ModelState 
= controller.ModelState,
                    ModelType 
= model.GetType(),
                    PropertyFilter 
= propertyFilter,
                    ValueProvider 
= controller.ValueProvider
                };
                binder.BindModel(controller.ControllerContext, bindingContext);

            }
            
else
            {
                
throw new Exception("isExtension不能选择false");
            }
        }
        
private static bool IsPropertyAllowed(string propertyName, string[] includeProperties, string[] excludeProperties)
        {
            
bool includeProperty = (includeProperties == null|| (includeProperties.Length == 0|| includeProperties.Contains(propertyName, StringComparer.OrdinalIgnoreCase);
            
bool excludeProperty = (excludeProperties != null&& excludeProperties.Contains(propertyName, StringComparer.OrdinalIgnoreCase);
            
return includeProperty && !excludeProperty;
        }
    }

有了这些,当我们想对新表进行编辑和添加时只需要添加相应的Partial编辑视图就可以了,简化了我们的编程工作。

四、缺点

1、须要按照规则命名,比方说Partial视图需要以相应的类名来命名

2、页面引用是弱类型的

 

站长资讯网
.
分页: [1] [2] [3] [4]
TAG: ASP.NET MVC
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言