2

かなりの数のスレッドを読みましたが、なぜこれが機能しないのかわかりません。ナビゲーション バーとして機能する SharePoint Web パーツを作成しています。JSコードでC#変数を試して参照するまで、すべてうまくいきます。

VisualWebPart1UserControl.ascx.cs からの私の C# は次のとおりです。

    public class myClass
    {

        public string theValue = "hi";


    }

VisualWebPart1UserControl.ascx ページの HTML/JS は次のとおりです。

    <script type="text/javascript">
function getMyValue() {

    var myVar = "<%= myClass.theValue %>";

    alert(myVar);
}

<li><a href="http://maindt" 
    onmouseover="getMyValue(), mopen('m1')"
    onmouseout="mclosetime()">MAINDT Home</a>
    <div id="m1" 
        onmouseover="mcancelclosetime()"
        onmouseout="mclosetime()">
    <a href="">Site 1</a>
    <a href="">Site 2</a>
    <a href="">Site 3</a>
    </div>
</li>

「MaindDT Home」ドロップダウンにマウスを合わせると、良いアラート(myVar)が表示されますが、値が表示されると予想している場合、コンテンツは <%=myClass.theValue%> になります。 「こんにちは」である値

4

5 に答える 5

1

getMyValue() は、asp/aspx ページとインライン化する必要があります。また、直接アクセスするには myClass.theValue を static にする必要があります。

于 2013-07-04T19:39:35.383 に答える
-1

JavaScript が ascx ファイルにインラインで存在することを確認してください。

クラス宣言のすぐ下にある VisualWebPart1UserControl.ascx.cs で、次のように変数を宣言する必要があります。

protected MyClassInstance = 新しい myClass();

これにより、アクセサ キーワード「protected」のおかげで、ascx ページから読み取り/アクセスできるクラスのインスタンスが作成されます。

于 2013-07-04T20:16:42.830 に答える