我正在尝试在以前存在的网站中开始使用DynamicData功能。基本上我正在关注this tutorial。当我开始创建Field模板时,我决定创建一个内置Dynamic Data内容的新站点,然后将文件夹复制过来。
不幸的是,当我这样做并尝试编译时,我得到错误“无法加载类型...”几乎所有.ascx文件都在DynamicData目录中。我将“新”项目命名为与预先存在的站点相同,以便命名空间相同......但我想不出还有什么我可能会遗漏。
除了* .ascx.Designer.cs文件显示在解决方案资源管理器中之外,一切看起来都不错。我尝试删除一个,然后将该文件复制回目录,但它不起作用。我假设我需要做一些特别的事情,以便Visual Studio正确处理它们并且可以编译?
这是.aspx文件之一:
<%@ Control Language="C#" CodeBehind="FilterUserControl.ascx.cs" Inherits="EService.FilterUserControl" %>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true"
EnableViewState="true" ontextchanged="new">
<asp:ListItem Text="All" Value="" />
</asp:DropDownList>
这是匹配的.cs文件:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;
namespace EService
{
public partial class FilterUserControl : System.Web.DynamicData.FilterUserControlBase
{
public event EventHandler SelectedIndexChanged
{
add
{
DropDownList1.SelectedIndexChanged += value;
}
remove
{
DropDownList1.SelectedIndexChanged -= value;
}
}
public override string SelectedValue
{
get
{
return DropDownList1.SelectedValue;
}
}
protected void Page_Init(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
PopulateListControl(DropDownList1);
// Set the initial value if there is one
if (!String.IsNullOrEmpty(InitialValue))
DropDownList1.SelectedValue = InitialValue;
}
}
}
}
这是.ascx.designer.cs文件:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.1433
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace EService
{
public partial class FilterUserControl
{
protected System.Web.UI.WebControls.DropDownList DropDownList1;
}
}
编辑:如果我在网站上创建文件,然后从我创建的临时站点复制内容似乎编译得很好。真的不知道这里的问题是什么...我尝试手动修改文件以匹配复制的结果,除非我实际在网站中创建它们,否则它们仍然无法工作。这很奇怪......
答案 0 :(得分:0)
问题是由于临时网站创建了&lt;%@ Control&gt;使用CodeBehind属性而不是CodeFile属性的定义。出于某种原因,实际网站中的页面只会在声明CodeFile时编译...
答案 1 :(得分:0)
DD适用于网站或网络应用。但是当从其他项目中复制时,类型需要相同,否则需要进行大量编辑才能将我的文章转换为Getting Dynamic Data Futures filters working in a File Based Website.