Передайте переменную Javascript в ASP.NET CommandArgument

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

Как и следовало ожидать, 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);
} 
Другие вопросы по тегам