Обнаружена ошибка при выполнении постбека с использованием __doPostBack () - PullRequest
2 голосов
/ 29 октября 2010

Я получаю сообщение об ошибке в JavaScript при выполнении обратной записи. Код выглядит следующим образом:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>Untitled Page</title>

    <script language="javascript" type="text/javascript">

function DoPostBack() 
{
    __doPostBack('Button2','My Argument');
}

    </script>

</head>
<body>
    <form id="form1" runat="server">
    <input type="button" id="Button2" value="Press me" onclick="DoPostBack()" />
    </form>
</body>
</html>

Я получаю следующую ошибку:

Line: 13
Error: Object expected

Я не могу понять, почему появляется эта ошибка. Пожалуйста, помогите ...

Ответы [ 3 ]

2 голосов
/ 29 октября 2010

вы можете использовать скрытую кнопку для выполнения этой задачи

Button1.Attributes.CssAttributes.Add("Display","None");

после сокрытия кнопки

Вы можете вызвать его функцию щелчка из JavaScript

document.getElementById('<%=Button1.ClientID%>').click();

это вызовет Button1_Click на сервере

** не забудьте установить UseSubmitBehaviour=false, чтобы заставить это работать в браузерах не IE

надеюсь, что поможет:)

1 голос
/ 27 ноября 2013

__ doPostBack не создается по умолчанию.Если страница не имеет элемента управления, который вызывает обратную передачу, ASP.NET не создает / генерирует этот метод.В вашем случае вы можете заставить ASP.NET генерировать __doPostBack, добавив следующую строку в ваше событие Page_Load:

ClientScript.GetPostBackEventReference(this, string.Empty);

Эта строка приведет к созданию этого метода.

0 голосов
/ 29 октября 2010

_doPostBack не создается по умолчанию. Появляется, когда вы добавляете элемент управления с autoPostBack = true или добавляете сетку с кнопками в нем. Так что в вашем коде нет сгенерированного _doPostBack javascript. Если вы добавите

<asp:DropDownList ID="list" runat="server" AutoPostBack="true">
        <asp:ListItem Text="first"></asp:ListItem>
        <asp:ListItem Text="second"></asp:ListItem>
    </asp:DropDownList>

например, ваш код будет работать. Не знаю, действительно ли это полезный код :) однако.

...