#asp.net #visual-studio #visual-studio-2010
#asp.net #visual-studio #visual-studio-2010
Вопрос:
VS2010, .Net 4.0
При попытке расширить asp.net Серверное управление BoundField, как описано здесь:
http://iridescence.no/post/FixingBoundFieldSupportforCompositeObjects.aspx
Я создал класс:
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CustomControls
{
public class CompositeBoundField : BoundField
{
protected override object GetValue(Control controlContainer)
{
object item = DataBinder.GetDataItem(controlContainer);
return DataBinder.Eval(item, this.DataField);
}
}
}
Я зарегистрировал его со своей страницы:
<%@ Register TagPrefix="cc" Namespace="CustomControls" %>
… и на этой странице я пытаюсь использовать его следующим образом:
<asp:GridView ID="gridDataSource" runat="server">
<Columns>
<cc:CompositeBoundField DataField="Application.ApplicationName" HeaderText="ApplicationName" />
</Columns>
</asp:GridView>
Однако я получаю предупреждение компилятора:
Element 'CompositeBoundField' is not a known element. This can occur if there is a compilation error in the Web site, or the web.config file is missing.
И когда я запускаю, я получаю сообщение об ошибке:
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Unknown server tag 'cc:CompositeBoundField'.
Есть идеи, что я делаю не так?
Я пробовал это:
http://blog.tentaclesoftware.com/archive/2010/07/21/95.aspx
Ответ №1:
В объявлении Register сборка обязательна:
<%@ Register Namespace="CustomControls" TagPrefix="cc" Assembly="MyCompany.MyApp.WebApp" %>
Ответ №2:
Убедитесь, что атрибут Assembly содержит полное строгое имя, например
<%@ Register Assembly="MyCompany.MyApp.WebApp, Version=3.42.0.0, Culture=neutral, PublicKeyToken=674cf0e5bf72fa08"
TagPrefix="cc"
Namespace="CustomControls" @%>
Кроме того, вы можете столкнуться с проблемами сопоставления двух сборок с одним и тем же TagPrefix . Не делайте этого. Это может привести к непредсказуемым результатам и может внезапно перестать работать.