问题出现的情形:LinqDataSource数据绑定到DetailsView或GridView均出错,错误如下:
“/”应用程序中的服务器错误。
没有为该对象定义无参数的构造函数。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.MissingMethodException: 没有为该对象定义无参数的构造函数。
源错误:
执行当前 Web 请求期间生成了未经处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[MissingMethodException: 没有为该对象定义无参数的构造函数。]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +122
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +239
System.Activator.CreateInstance(Type type, Boolean nonPublic) +85
System.Activator.CreateInstance(Type type) +12
System.Web.HttpRuntime.FastCreatePublicInstance(Type type) +80
System.Web.UI.WebControls.LinqDataSourceView.CreateContext(Type contextType) +12
System.Web.UI.WebControls.LinqDataSourceView.CreateContextAndTable(DataSourceOperation operation) +857
System.Web.UI.WebControls.LinqDataSourceView.CreateContextAndTableForSelect() +151
System.Web.UI.WebControls.LinqDataSourceView.CreateContext(DataSourceOperation operation) +15
System.Web.UI.WebControls.ContextDataSourceView.GetSource(QueryContext context) +21
System.Web.UI.WebControls.LinqDataSourceView.GetSource(QueryContext context) +334
System.Web.UI.WebControls.LinqDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +64
System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +22
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +151
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +76
System.Web.UI.WebControls.DetailsView.DataBind() +10
System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +114
System.Web.UI.WebControls.DetailsView.EnsureDataBound() +239
System.Web.UI.WebControls.CompositeDataBoundControl.CreateChildControls() +76
System.Web.UI.Control.EnsureChildControls() +97
System.Web.UI.Control.PreRenderRecursiveInternal() +42
System.Web.UI.Control.PreRenderRecursiveInternal() +163
System.Web.UI.Control.PreRenderRecursiveInternal() +163
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +906
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.8.3815.0
问题原因:自己创建的datacontext部分类缺失了0参数的构造函数。
解决办法:不更改VS自动生成的dbml文件(mystudent)的datacontext部分类(mystudentDataContext)的代码(在mystudent.designer.cs文件里面),新建一个类,添加0参数构造函数,问题解决,代码如下:
using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; /// <summary> /// mystudent 的摘要说明 /// </summary> public partial class mystudentDataContext : System.Data.Linq.DataContext { public mystudentDataContext() : base(ConfigurationManager.ConnectionStrings["LiteratureConnectionString01"].ConnectionString, mappingSource) { // // TODO: 在此处添加构造函数逻辑 // } }