1

ASP.NETMVC3は初めてです。これらのビデオでここと同じことをしているときに、このエラーで立ち往生しました:

http://tv.telerik.com/watch/orm/building-a-mvc-3-application-database-first-with-openaccess-creating-model?seriesID=1529 および

http://tv.telerik.com/watch/orm/building-a-mvc-3-application-database-first-with-openaccess-creating-controllers

(スタックで他の同様の質問を調べましたが、解決策が見つかりませんでした)

私のコードは:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace testbaza.Controllers
{
    public class KorController : Controller
    {

        private EntitiesModel dbContext;
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
            if (this.Session[ContextModule.Content_KEY] != null)
            {
                this.dbContext = this.Session[ContextModule.Content_KEY] as EntitiesModel;
            }
            else {
                throw new Telerik.OpenAccess.Exceptions.NoSuchObjectException("Cannot find EntitiesModel", null);
            }
        }

そして、このエラーが発生します:「ContextModule」という名前は現在のコンテキストに存在しません。

これは私が以前に行った私のさらなるコードです:

これをproject\Web.configに追加しました(ビデオ1と同じ):

 <httpModules>
      <add name="ContextModule" type="testbaza.ContextModule, testbaza"/>
    </httpModules>

「ContextModule」というASP.NETモジュールを\projectに追加しました(ビデオと同じ)

これはContextModule.csです:

using System;
using System.Web;

namespace testbaza.Models
{
    public class ContextModule : IHttpModule
    {

        internal const string CONTEXT_KEY = "datacontext";

        public void Dispose()
        {

        }

        public void Init(HttpApplication context)
        {
            context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute);
            context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
        }

        private void context_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            if (HttpContext.Current.Session != null)
            {
                HttpContext.Current.Session[CONTEXT_KEY] = new EntitiesModel();
            }
        }

        private void context_PostRequestHandlerExecute(object sender, EventArgs e)
        {
            CommitTransactions();

            DisposeContext();

            ClearSession();

        }

        private void CommitTransactions()
        {
            if (HttpContext.Current.Session == null)
            {
                return;
            }

            EntitiesModel dbContext =
                HttpContext.Current.Session[CONTEXT_KEY] as EntitiesModel;
            if (dbContext != null)
            {

                dbContext.SaveChanges();
            }
        }

        private void DisposeContext()
        {
            if (HttpContext.Current.Session == null)
            {
                return;
            }

            EntitiesModel dbContext =
                HttpContext.Current.Session[CONTEXT_KEY] as EntitiesModel;
            if (dbContext != null)
            {

                dbContext.Dispose();
            }
        }

        private void ClearSession()
        {

            if (HttpContext.Current.Session == null)
            {
                HttpContext.Current.Session.Remove(CONTEXT_KEY);
            }
        }
    }
}

誰かが問題を手伝ってくれますか?前もって感謝します!

4

2 に答える 2

3

コントローラに次を追加します。

using testbaza.Models;

そして、あなたは大丈夫なはずです。

お役に立てれば

于 2012-09-20T01:04:58.877 に答える
2

そのクラスはtestbaza.Models、コントローラーが含まれていない名前空間で定義されています。ステートメント
を使用して、その名前空間をインポートする必要があります。using

于 2012-09-19T23:38:19.757 に答える