提示错误“没有可访问的表。请确保在 Global.asax 中注册了至少一个数据模型.. ”解决方法

如题,不知道大家使用ASP.NET进行网站开发的时候遇没遇到过这个错误的黄页。

“没有可访问的表。请确保在 Global.asax 中注册了至少一个数据模型并启用了基架,或者实现自定义页面。”


今天改着改着代码就出现了这个问题,经过查找,最终发现原因如下:

摘要一部分代码

.....
<li class="menu">
   <ul>
      <li id="li1">
          <a id="A1" runat="Server" href="#">XXX项</a>
      </li>
      <li>
          <ul>
             <li id="li2" ><a id="A2" runat="Server" href="#">XXX子项</a></li>
          </ul>
      </li>
    </ul>
</li>
.....

当我点击<a>标签时就会报上面的错误。

原因是<a>标签有runat="server"属性,同时href="#"这就造成了这个问题的出现。

解决办法:

1、把runat="server"去掉。(推荐)

2、把href 属性加上合法的url。(推荐)

3、在Global.asax文件中“重要: 数据模型注册 ”处有这样一行代码

//DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });

把这行代码解注,把YourDataContextType换成你自己项目的数据上下文类,同时把ScaffoldAllTables变成true 。当然,这个方法只是解决不出黄页的问题,但是你的功能问题应该没法解决。


下面说一下为什么我会写出

<a id="A1" runat="Server" href="#">XXX项</a>

这么怪异的代码,因为我的项目用的是母版页形式,之前在href里是导向各个内容页的url,我最开始写的是相对路径,但是当把项目放到服务器上运行的时候,就必须用绝对路径(这种形式:~/XXX/XXX.aspx)。但是这个时候就必须得加上runat="server"属性了,后来我又是因为想给导航加效果,因为导向内容页的时候会刷新整个页面,所以效果也就看不到了,最后就对内容页的<div>使用了ajax 达到了想要的效果。因为<a>标签比较多,所以当时忘记去掉了一个runat="server"属性,然后就发现了这个黄页错误。


你可能感兴趣的:(server,标签,模型,global.asax)