最後の数字とASP.Netイベントハンドラーを返すJavaScript正規表現?
-
06-07-2019 - |
質問
次の文字列を指定すると、「s0 \\ 8 \\ 26 \\ 29 \\ 30 \\ 32」または「s0 \\ 8 \\ 26 \\」または「s0 \\ 5」が返されます。文字列の最後の桁。
指定:
function getFolderID(mystr) {
var reFolderID = /\bs0\\\\[0-9]+\b/g //regexp to return s0\\34
var retArr = [];
var retval = '';
retArr = mystr.match(reFolderID);
retArr = retArr[0].replace(/s0\\\\/g, "");
if (retArr != null) {
retval = retArr[retArr.length - 1];
}
//alert("Ret: " + retval);
return retval;
}
最初は最初の数字だけが必要だと思っていましたが、最後の数字が必要であることがわかりました。
これに適した正規表現の用語は何ですか?
また、返されたJS値で何かを行うためにASP.Netイベントハンドラを作成するにはどうすればよいですか?
解決
次を試すことができます。書式に従って、最後の一連の数値をグループ化する必要があります。
/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/
つまり、次のようなものです:
function getFolderID(mystr) {
// search string for last group of digits in the pattern
var matches = mystr.match(/s0\\\\(?:[0-9]+\\\\)*([0-9]+)/);
// if matches is null, replace with "defaults"
matches ||= ["", ""];
// grab the first grouped match
return matches[1];
}
ASP.NETイベントに関しては、おそらく<asp:UpdatePanel />
またはAjaxライブラリ(jQuery、Prototypeなど)を選択するなど、Ajaxを使用する必要があります。
Ajaxなしでは、JavaScriptとASP.NETが同時に実行されることはありません。
他のヒント
この方法で文字列の最後の桁を照合できます:
function getFolderId(str) {
var pattern = /([0-9]+)$/;
var result = pattern.exec(str);
return result ? result[1] : null;
}
サーバーにJavascriptパラメーターを返す問題について...
2つのASP.Net非表示フィールドを作成し、JSでこれらのフィールドの値を設定します...出来上がり-コードビハインドから利用可能:
// set .net hidden control values so they're server-side accessible
document.getElementById('ctl00_ContentPlaceHolderMainBody_HidTreeContextAction').value = buttonAction;
document.getElementById('ctl00_ContentPlaceHolderMainBody_HidTreeContextID').value = buttonFolder;
そして
<asp:HiddenField ID="HidTreeContextAction" runat="server" />
<asp:HiddenField ID="HidTreeContextID" runat="server" />
ワークフローは次のとおりです。 1)ユーザーがツリーノードを右クリックします 2)コンテキストメニューが表示されます 3)コンテキストメニュー項目を選択すると、非表示の値を設定するJSが起動します 4)ユーザー入力を受け入れるようにajaxスタイルのウィンドウが表示されます 5)ユーザーが送信をクリックする 6)両方のパラメーターを使用して、データの送信先/送信先を決定します
これはちょっとしたハックであり、AJAXを使用していない可能性があります。誰かがこれがどのようにajaxスタイルで行われるかを共有したい場合は、素晴らしい!
他の誰かがそれを必要とする場合に備えて、この簡単な修正を共有すると思いました。