Передайте переменную Javascript в ASP.NET CommandArgument - PullRequest
0 голосов
/ 29 января 2019

Не похоже, что это возможно, но есть ли способ передать переменную javascript в поле CommandArgument?Я пытаюсь передать переменную unit_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" />

1 Ответ

0 голосов
/ 29 января 2019

Как и следовало ожидать, 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);
} 
...