Sharepoint内にカスタムWebパーツがあり、Webパーツにいくつかのajaxを適用しようとしています。
同じコードは.netWebアプリケーション内では機能しますが、SharePointWebパーツ内では機能しません。
.net Webアプリケーションのコード(aspxページとその背後にあるコード)を以下に示します。これは正常に機能します。
ASPXファイル
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="WebApplication3._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Add the page method call as an onclick handler for the div.
$("#Result").click(function () {
var loc = window.location.href;
$.ajax({
type: "POST",
url: loc + "/GetMessage",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Replace the div's content with the page method's return.
$("#Result").text(msg.d);
}
});
});
});
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div id="Result">Click here for the time.</div>
<asp:Button ID="btnClick" runat="server" Text="Button" />
</asp:Content>
.CSファイル
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
namespace WebApplication3
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
public static string GetMessage()
{
return "Codebehind method call...";
}
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
}
ポストバックを行わずにクリックすると、「ここをクリックしてください」というテキストが「メソッド呼び出しの背後にあるコード」に変わります。GetMessage()
コードにステップインできます。これにより、.netWebアプリケーション内のコードビハインドのメソッドが呼び出されます。
ただし、これはSharePoint 2010内のWebパーツでは機能しません。誰かアイデアはありますか?