Вызовите диалог подтверждения с сервера ASP.NET и верните выбор на сервер

Я новичок в веб-программировании. У меня есть проблема:

  1. Пользователь видит страницу и нажимает «Загрузить документ».
  2. Документ загружается на сервер, читается, и на странице отображается новая информация, полученная из файла.
  3. Пользователь может нажать кнопку «ВЫПОЛНИТЬ». Это вызов метода сервера.
  4. In the server method there is a if statement. If this is true, is all okay.. Else, a confirm dialog in showed to the user.
    • if the user choose NO, the process ends.
    • если пользователь выбирает YES, выполняется другой другой метод сервера, и после этого пункт (d) повторяется снова.

Пункты 1, 2 и 3 выполнены. У меня сложно с 4-м пунктом...

Я думаю, потому что мне пока не совсем понятно, как взаимодействовать с серверами и клиентами вместе. Я знаю, что вы не можете напрямую вызывать JavaScript из C# и наоборот, но есть несколько методов (например, Ajax) для этого... но они мне пока не ясны.

Это пример моего кода:

ЗагрузитьDoc.aspx

<script type="text/javascript" language="javascript">
    function ConfirmDialog() {
        if (confirm("You are a new. You wanna sign-in?") == true) {
            // call server method
        }
    }

</script>

...

<asp:Button ID="btnUpload" runat="server" Text="UPLOAD DOC" OnClick="btnUpload_Click" />

ЗагрузитьDoc.aspx.cs

// ...

private bool btnUpload_Click(List<MyStuff> myList)
{
    List<MyStuff> vList = new List<MyStuff>();
    bool up = Upload(vList);
    // ...
}

private bool Upload(List<MyStuff> myList)
{
    bool registered;

    // ... other stuffs...

    if (registered == true)
    {
        // do things...
    }
    else
    {
        // from here should show the confirm dialog.
        System.Web.UI.ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "ConfirmDialog()", true);
    }
}

person Gioce90    schedule 17.02.2016    source источник
comment
вы можете выполнить поиск в Google по следующему C# stackoverflow if(confirm javascript, и вот один из вариантов среди многих stackoverflow.com/questions/11643515/   -  person MethodMan    schedule 17.02.2016
comment
Да, я поискал в гугле и в StackOverFlow, но не нашел (или думаю, что не нашел) ничего полезного для своей нужды. Потому что да, я хочу подтвердить для пользователя, но после этого, если пользователь выберет ДА, я хочу продолжить на сервере (возможно, без обновления страницы). Наберитесь терпения, это новый мир для меня :)   -  person Gioce90    schedule 18.02.2016


Ответы (1)


Чтобы подчеркнуть то, что вы, вероятно, уже знаете: код C# выполняется на сервере, а Javascript выполняется на клиенте.
При этом вы можете вызывать функции Javascript из server, запустив их при отображении страницы на стороне клиента.

Я рекомендую прочитать об ScriptManager, который поможет вам с этой задачей.

В частности, что-то вроде этого, вероятно, вы хотите поместить в else clasue вашей Upload функции:

ScriptManager.RegisterStartupScript(this, this.GetType(), "confirmDialog", "ConfirmDialog();", true);

Что касается создания обратной передачи со стороны клиента на сервер, используйте метод doPostback.

person Blachshma    schedule 17.02.2016
comment
Хорошо, я добавил Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "ConfirmDialog()", true); в оператор else. Теперь я вижу диалог подтверждения, хорошо. Но мне нужно вызвать другой метод сервера, метод login() из js. - person Gioce90; 17.02.2016
comment
Обновить ответ - person Blachshma; 17.02.2016
comment
Да, отображается диалоговое окно подтверждения. Теперь, если выбрано «да», мне нужно продолжить работу на сервере (определенным методом) - person Gioce90; 18.02.2016