0

テーブルの各行の最後に 2 つのリンク ("href") を追加したユーザーのリストがあります。1 つは "update" ユーザー用、2 番目は "delete" ユーザー用です。したがって、ユーザーのIDを取得し、別のフィールドを「true」に設定し、これらの値を以前に作成したフォーム(2つの「非表示」フィールドのみのフォーム)に挿入するjavascript関数への呼び出しを追加したことを有効にします。関数は、サーバー部分 (asp.net コード) への submit() 操作をアクティブにしました。

確認したところ、submit() 操作は問題なく動作しました (respons.write("-----")... で確認しました)。

しかし、送信ボタンの値を尋ねることで IsPost 内の送信フォーム ボタンを認識する方法を知っています (例: if(Request.Form["ExpertButton"]== "delete"){..some code here... .})

しかし、javascript で submit() を有効にすると、どうすれば投稿を認識できますか? 隠しフィールドの値を試してみましたが、これをキャプチャできず、ifステートメントをスキップしました....

デバッグで見つかった別の問題は、関数 submit() が発生したときにブラウザー (IE9) がエラーをスローすることです...

ユーザーコードのリスト:

foreach(var row in db.Query(displayExperts,nameOfExpert))
                {
                <tr>
                    <td class="dispExpertActScreen">@row.ExpertID</td>
                    <td class="dispExpertActScreen">@row.name</td>
                    <td class="dispExpertActScreen">@row.password</td>
                    <td class="dispExpertActScreen">@row.allowBonds</td>
                    <td class="dispExpertActScreen">@row.allowStocks</td>
                    <td class="dispExpertActScreen">@row.allowExchangeTraded</td>
                    <td class="dispExpertActScreen">@row.allowMutualFund</td>
                     <td class="dispExpertActScreen"><a href="#" onclick="expertToDelete('@row.ExpertID') ;return false;" style="color: #b04e4e">update</a></td>
                    <td class="dispExpertActScreen"><a href="#" onclick="expertToDelete('@row.ExpertID') ;return false;" style="color: #b04e4e">delete</a></td>
                </tr>
                }

フォーム:

<form method="post" name="deleteExpert" style="font-size: medium; margin-top: 10%" dir="rtl">
    <input type="hidden" name="expertID" id="expertID" value="">
    <input type="hidden" name="txtJavascriptMode" id="txtJavascriptMode" value="">
</form> 

関数:

<script>

    function expertToDelete(expertID) {

        document.getElementById('expertID').value = expertID;
        document.getElementById('txtJavascriptMode').value = 'true';
        document.getElementById('deleteExpert').submit();
    }

</script>

asp.net コード:

@{
    var db = Database.Open("MyProjectSite");
    var display="no";
    var displayExperts="";
    var nameOfExpert="";
    var category="";
     if(IsPost)
    {
        if(Request.Form["ExpertButton"]== "search")// this is by button!!!
        {
             some code.....

        }

        Response.Write("----");
         if(Request.Form["txtJavascriptMode"] == "true")
         {
            var id=Request.Form["expertID"];
            var deleteQuery="DELETE FROM InvestmanExperts WHERE ExpertID=@0";
            db.Execute(deleteQuery,id);
         }
    }
    db.Close();
}

別の奇妙なことは、次の行を入力したときです。

Response.Write("----"+Request.Form["txtJavascriptMode"]);

前:

if(Request.Form["txtJavascriptMode"] == "true");

Web サイトのインデントが悪いように見えますが、ユーザーの削除行は正常に機能します。なぜですか?

ありがとう...

4

1 に答える 1

0

隠しフィールドは正常に機能するはずです。iddeleteExpertをフォームに追加してみてください。

于 2012-12-02T12:36:50.573 に答える