以下是我的代码,当我在表单中登录时,将发生错误“对象引用未设置为对象的实例。”。实际上我在母版页中显示数据。
母版页: -
<%@ 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();
}
答案 0 :(得分:2)
您正在一种方法中在控制器中设置ViewData,但尝试在主页面中读取任何页面。这意味着你需要确保你所做的每一个动作都设置了Viewdata,这真是一个坏主意。
这里可能发生的事情是你有另一个没有设置ViewData的动作,例如索引的HttpPost版本。