日期:2014-05-18  浏览次数:20399 次

MVC部分视图取值问题
用MVC 建立了一个EDIT页面

其中有个下拉列表用 部分视图显示,并选择相关项进行修改.

但我按提交的时候,报错了.

提示 部分视图那行语句.
未将对象引用设置到对象的实例

------解决方案--------------------
阅读Pro ASP.NET MVC 3 Framework这本书的第8、9章,应该可以解决你的问题。也可以参阅我在bbsMVC论坛(http://www.bbsmvc.com/mvclearn/thread-173-1-1.html)或博客园(http://http://www.cnblogs.com/r01cn/)关于这些章节翻译的帖子。
------解决方案--------------------
可能是你给分布视图传递了一个viewdata[..]值.

你get的action里面给这个viewdata赋值了, 而post的action里面没给这个viewdata赋值.
------解决方案--------------------
在页面加载是绑定下拉列表,同时在提交时如果发生错误也要绑定下拉列表
C# code

public ActionResult Create()
        {
            var db = new dbContent();
            var list = from p in db.NewsType orderby p.SortId descending select p;
            ViewBag.TypeId = new SelectList(list, "TypeId", "TypeName");
            return View();
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Create(News model)
        {
            try
            {
                using (var db = new dbContent())
                {
                    db.News.AddObject(model);
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
            }
            catch
            {
                var db = new dbContent();
                var list = from p in db.NewsType orderby p.SortId descending select p;
                ViewBag.TypeId = new SelectList(list, "TypeId", "TypeName", model.NewsType.TypeId);
                return View(model);
            }
        }