0

看起来这不可能,但是有没有办法将 javascript 变量传递到 CommandArgument 字段?我正在尝试传递 facility_id 变量,以便后面的代码可以访问该值。

这是我的aspx代码:

<script type="text/javascript">
    var facility_id = 50;
</script>
<asp:Button CssClass="btn btn-primary btn-lg" ID="submitBtn" runat="server" Text="Create EDD" CommandArgument='<% facility_id.Value %>' OnClick="submitBtn_Click" />
4

1 回答 1

0

如您所料,CommandArgument是服务器控件的服务器端属性,Button您不能从客户端代码分配它,因为它不呈现相应的 HTML 属性。但是,您可以使用以下功能从客户端设置回发__doPostBack()

<script>
    var facility_id = 50;

    $('#something').click(function () {
        __doPostBack("<%= submitBtn.UniqueID %>", facility_id);
    });
</script>

背后的代码

protected void submitBtn_Click(object sender, EventArgs e)
{
    // assumed 'facility_id' is an int? or Nullable<int> property,
    // make sure the event argument is parseable to integer value
    var evArg = int.Parse(Request.Form["__EVENTARGUMENT"]);
    facility_id = evArg;
}

如果__doPostBack()由于页面上未定义而无法使用函数,则可以处理PreRender该页面的事件并提供GetPostBackEventReference()方法:

protected void Page_PreRender(object sender, EventArgs e)
{
    ClientScript.GetPostBackEventReference(submitBtn, string.Empty);
} 
于 2019-01-29T01:45:55.357 回答