如题,不知道大家使用ASP.NET进行网站开发的时候遇没遇到过这个错误的黄页。
“没有可访问的表。请确保在 Global.asax 中注册了至少一个数据模型并启用了基架,或者实现自定义页面。”
今天改着改着代码就出现了这个问题,经过查找,最终发现原因如下:
摘要一部分代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
.....
<
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文件中“重要: 数据模型注册 ”处有这样一行代码
1
|
//DefaultModel.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
|
把这行代码解注,把YourDataContextType换成你自己项目的数据上下文类,同时把ScaffoldAllTables变成true 。当然,这个方法只是解决不出黄页的问题,但是你的功能问题应该没法解决。
下面说一下为什么我会写出
1
|
<a id=
"A1"
runat=
"Server"
href=
"#"
>XXX项</a>
|
这么怪异的代码,因为我的项目用的是母版页形式,之前在href里是导向各个内容页的url,我最开始写的是相对路径,但是当把项目放到服务器上运行的时候,就必须用绝对路径(这种形式:~/XXX/XXX.aspx)。但是这个时候就必须得加上runat="server"属性了,后来我又是因为想给导航加效果,因为导向内容页的时候会刷新整个页面,所以效果也就看不到了,最后就对内容页的<div>使用了ajax 达到了想要的效果。因为<a>标签比较多,所以当时忘记去掉了一个runat="server"属性,然后就发现了这个黄页错误。
本文转自 我不会抽烟 51CTO博客,原文链接:http://blog.51cto.com/zhouhongyu1989/1397600,如需转载请自行联系原作者