Событие нажатия кнопки веб-части SharePoint 2013 не срабатывает
Я создаю свою первую веб-часть Hello World с использованием видео Cloud 9 в качестве учебного пособия.
Я использую виртуальную машину Azure с SharePoint 2013, SQL Server 2012 и VS Premium 2013 с обновлением 4.
Веб-часть представляет собой простое текстовое поле с кнопкой и меткой. Событие click вызывает метод, который устанавливает для текста метки значение "Hello" + текст из текстового поля.
protected void btnSubmitThis_Click(object sender, EventArgs e)
{
lblOutput.Text = "Hello, " + txtTextBox.Text;
}
Мне удалось открыть свою веб-часть и вставить ее на домашнюю страницу SharePoint 2013.
Щелчок даже ничего не делает. На самом деле, при запуске в режиме отладки я вижу, что конструктор OnInit() и Page_Load() все выполняются, а btnSubmitThis_Click() - нет.
К веб-части прикреплен файл ascx.g.cs.
Я вижу, что этот файл также содержит приведенный ниже код, показывающий, что событие правильно обрабатывает метод:
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Never)]
[GeneratedCodeAttribute("Microsoft.VisualStudio.SharePoint.ProjectExtensions.CodeGenerators.SharePointWebP" +
"artCodeGenerator", "12.0.0.0")]
private global::System.Web.UI.WebControls.Button @__BuildControlbtnSubmitThis() {
global::System.Web.UI.WebControls.Button @__ctrl;
@__ctrl = new global::System.Web.UI.WebControls.Button();
this.btnSubmitThis = @__ctrl;
@__ctrl.ApplyStyleSheetSkin(this.Page);
@__ctrl.ID = "btnSubmitThis";
@__ctrl.Text = "Submit";
@__ctrl.Click -= new System.EventHandler(this.btnSubmitThis_Click);
@__ctrl.Click += new System.EventHandler(this.btnSubmitThis_Click);
return @__ctrl;
}
Я не вижу сгенерированных ошибок, событие click просто не вызывает метод.
Чего мне здесь не хватает?
Я готов ответить на любой вопрос, так как я действительно хотел бы выяснить этот вопрос, и я уже потратил несколько дней, пытаясь самостоятельно.
Заранее большое спасибо за вашу помощь.
Код добавлен по запросу:
ASCX:
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="HelloWorldWebPart.ascx.cs" Inherits="HelloWorld.HelloWorldWebPart.HelloWorldWebPart" %>
<p>
Name:
<asp:TextBox ID="txtTextBox" runat="server"></asp:TextBox>
<asp:Button ID="btnSubmitThis" runat="server" OnClick="btnSubmitThis_Click" Text="Submit" />
</p>
<asp:Label ID="lblOutput" runat="server"></asp:Label>
ascx.cs:
using System;
using System.ComponentModel;
using System.Web.UI.WebControls.WebParts;
namespace HelloWorld.HelloWorldWebPart
{
[ToolboxItemAttribute(false)]
public partial class HelloWorldWebPart : WebPart
{
// Uncomment the following SecurityPermission attribute only when doing Performance Profiling on a farm solution
// using the Instrumentation method, and then remove the SecurityPermission attribute when the code is ready
// for production. Because the SecurityPermission attribute bypasses the security check for callers of
// your constructor, it's not recommended for production purposes.
// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, UnmanagedCode = true)]
public HelloWorldWebPart()
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitializeControl();
}
protected void Page_Load(object sender, EventArgs e)
{
int Test = 0;
}
protected void btnSubmitThis_Click(object sender, EventArgs e)
{
lblOutput.Text = "Hello, " + txtTextBox.Text;
}
}
}
1 ответ
Он не хотел работать в качестве изолированного решения. Хотя в фермерском решении отладка сложнее, она кажется более надежной.