如何在asp.net mvc中使用viewdata显示数据

时间:2013-02-25 10:49:23

标签: asp.net-mvc-3

以下是我的代码,当我在表单中登录时,将发生错误“对象引用未设置为对象的实例。”。实际上我在母版页中显示数据。

母版页: -

        <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
        <%@ Import Namespace="ClientProj.Models" %>

               <%foreach(var m in (IEnumerable<user_master>)ViewData["email"])
                    { %>
                                <%=m.email %>
                    <%} %>

和我的控制器: -

          public ActionResult Index()
          {

               ViewData["email"] = from p in db.user_master select p;

               return View();
         }
    [HttpPost]
    public ActionResult Index(user_master log)
    {


        ViewData["email"] = from p in db.user_master where                                                      
                            p.user_id==Convert.ToInt32(Session["user"]) select p;

        var ss = from p in db.user_master
                 where p.username == log.username &&
                 p.user_password == log.user_password
                 select p;

        if (ss.Count() > 0)
        {

            Session["id"] = ss.First().user_id;
            Session["user"] = ss.First().username;
            return RedirectToAction("Home");
        }
        else
        {

            return RedirectToAction("index");
        }


        return View();
    }

1 个答案:

答案 0 :(得分:2)

您正在一种方法中在控制器中设置ViewData,但尝试在主页面中读取任何页面。这意味着你需要确保你所做的每一个动作都设置了Viewdata,这真是一个坏主意。

这里可能发生的事情是你有另一个没有设置ViewData的动作,例如索引的HttpPost版本。