A.NET MVC教程:数据库表的增删改.(3)_.NET概论及软件使用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

A.NET MVC教程:数据库表的增删改.(3)

作者:黑客防线网安ASP维护基地 来源:黑客防线网安ASP维护基地 浏览次数:0

本篇关键词:数据库教程 bllTable
黑客防线网安网讯:   三、通用增加、修改首先添加一个CreateEditView.aspx视图<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">    <%Html.RenderPartial(ViewData["PartialN...

   三、通用增加、修改

首先添加一个CreateEditView.aspx视图

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <%Html.RenderPartial(ViewData["PartialName"].ToString()); %>

</asp:Content>


然后添加两个Partial视图News.ascx和User.ascx这两个视图是分别基于News和User类的强类型视图具体内容参加源码

接下来我们添加相应的Controller

 public ActionResult CreateEditView(string partialName, int? key)
        {

            ViewData["PartialName"] = partialName;

            RepositoryBase repositoryBase = new RepositoryBase(partialName);
            ICommonTable table;
            if (key == null)
            {
                table = repositoryBase.CreateNew();
            }
            else
            {
                table = repositoryBase.Get(key ?? 0);
            }

            return View("CreateEditView", table);
        }


        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult CreateEditView(string partialName, int? key, FormCollection formCollection)
        {
            RepositoryBase repositoryBase = new RepositoryBase(partialName);
            ICommonTable bllTable;
            if (key == null)
            {
                bllTable = repositoryBase.CreateNew();
            }
            else
            {
                bllTable = repositoryBase.Get(key ?? 0);
            }

            this.UpdateModel(bllTable, true);
            if (key == null)
            {
                Context.GetContext().GetTable(repositoryBase.EntityType).InsertOnSubmit(bllTable);

            }

            Context.GetContext().SubmitChanges();


            return RedirectToAction(partialName+"List");//返回到list
        }


这里边大家可能有疑问的就是this.UpdateModel(bllTable, true);这个方法在mvc框架中并不存在,这是我添加的扩展方法,这个地方如果使用UpdateModel(bllTable)虽然编译不会报错,但也没有更新成功,查了一下mvc的源码,问题就出在如下源码中:

 protected internal bool TryUpdateModel<TModel>(TModel model, string prefix, string[] includeProperties, string[] excludeProperties, IDictionary<string, ValueProviderResult> valueProvider) where TModel : class {
            if (model == null) {
                throw new ArgumentNullException("model");
            }
            if (valueProvider == null) {
                throw new ArgumentNullException("valueProvider");
            }

            Predicate<string> propertyFilter = propertyName => BindAttribute.IsPropertyAllowed(propertyName, includeProperties, excludeProperties);
            IModelBinder binder = Binders.GetBinder(typeof(TModel));

            ModelBindingContext bindingContext = new ModelBindingContext() {
                Model = model,
                ModelName = prefix,
                ModelState = ModelState,
                ModelType = typeof(TModel),
                PropertyFilter = propertyFilter,
                ValueProvider = valueProvider
            };
            binder.BindModel(ControllerContext, bindingContext);
            return ModelState.IsValid;
        }
 

 

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14143-1.html
网站维护教程更新时间:2012-03-30 05:27:37  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer