2

以下に示すのは私のコードで、フォームにログインすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。実際には、マスターページにデータを表示します。

マスターページ:-

        <%@ 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();
    }
4

1 に答える 1

2

1 つの方法でコントローラーに ViewData を設定していますが、ANY ページのマスター ページでそれを読み取ろうとしています。これは、すべてのアクションが Viewdata を設定するようにする必要があることを意味しますが、これは本当に悪い考えです。

ここでおそらく起こっているのは、Index の HttpPost バージョンなど、ViewData を設定しない別のアクションがあることです。

于 2013-02-25T10:53:38.807 に答える