Я пытаюсь начать использовать функциональность DynamicData на ранее существовавшем веб-сайте. В основном я следую этому руководству. Когда я добрался до части создания шаблонов полей, я решил, что, возможно, смогу создать новый сайт со встроенным материалом динамических данных, а затем просто скопировать папку.
К сожалению, когда я делаю это и пытаюсь скомпилировать, я получаю сообщение об ошибке "Не удалось загрузить тип..." практически для каждого файла .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;
}
}
РЕДАКТИРОВАТЬ: Если я создам файл на веб-сайте, а затем скопирую содержимое с временного сайта, который я создал, кажется, что он компилируется просто отлично. На самом деле понятия не имею, в чем проблема... Я попытался вручную изменить файлы, чтобы они соответствовали результатам копирования, и они все равно не будут работать, если я не создам их на сайте. Это просто странно...