私の ASCX には、asp.net 隠しフィールドが として定義されてい<asp:HiddenField ID="hdnNewAsset" runat="server" />
ます。
コード ビハインドには、次のコードがあります。
protected void Page_Load(object sender, EventArgs e)
{
_service = new ArticleDataService(PortalId);
if (!IsPostBack)
{
string rawId = Request[ArticleQueryParams.ArticleId];
DisplayArticleDetails(rawId);
}
if (hdnNewAsset.Value.Trim() != string.Empty)
ProcessNewAsset();
}
今、私のフロントエンドには、イベントに反応して隠しフィールドを設定し、ポストバックをトリガーする JavaScript 関数があります。
function assetSelected(assetGuid) {
$('input[id*="hdnNewAsset"]').val(assetGuid);
__doPostBack()
}
何が起こっているかというと、隠しフィールドがマークアップに設定されていることです (chrome は を示し[
<input type="hidden" name="dnn$ctr466$Main$ctl00$hdnNewAsset" id="dnn_ctr466_Main_ctl00_hdnNewAsset" value="98d88e72-088c-40a4-9022-565a53dc33c4">
]
ています$('input[id*="hdnNewAsset"]')
)。
ただし、ポストバックが発生するhdnNewAsset.Value
と、空文字列になります。
さらに不可解なのは、 show の開始時Page_Load
Request.Params["dnn$ctr466$Main$ctl00$hdnNewAsset"]
と98d88e72-088c-40a4-9022-565a53dc33c4
、ポストバック後に隠しフィールドの値が同じであることです (したがって、隠しフィールドはポストバック間で永続化されます) hdnNewAsset.Value
。
誰かが私が間違っていることを見ることができますか?