Открытие новых параметров передачи страницы без их отображения в URL - PullRequest
0 голосов
/ 12 февраля 2020

Я создаю MVC C# веб-приложение, и мне стало интересно, можно ли открыть другие страницы, для которых нужны параметры, без фактической отправки их через URL, что небезопасно и может привести к некоторым пользователь испортил другой реестр базы данных.

Моя проблема, тем не менее, я никогда не делал такого, и я не могу найти ни одного примера кода, который делает такое. Проект запускается с C# и JS, и я попробовал следующие основные вещи:

- так же с Ajax:

Прежде всего, у меня есть кнопка который вызывает функцию:

<a href="@Url.Action("actionEditStuff", "ControllerName")">Link Text</a>|


function openHorario(id, id_schedule, id_tool) {
    alert(oid, id_schedule, id_tool);
    $.ajax({
        type: 'POST',
        url: '/Schedules/actionEditStuff',
        data: {
            id: id,
            id_schedule: id_schedule,
            id_tool: id_tool
        },
        async: 'false',
        success: function (data) {
            //???
        }
    });
}

Я знаю, что есть способ go на новую страницу с успешным возвращением Ajax, но ... Это также требует, чтобы вы отправляли параметры через URL.

Очевидно, это не сработало, потому что действие, выполняемое в контроллере, заключается в том, чтобы возвращал представление, а не страницу . Итак ... Я понял, что моя идея была не очень умной, и перешел на что-то другое: ссылку, но всегда приходится отправлять параметры явно через URL.

Можно ли вообще что-то сделать это правильно, чисто?

Спасибо!

1 Ответ

0 голосов
/ 12 февраля 2020

@ Layan - просто чтобы проиллюстрировать мой комментарий выше, - вы могли бы реализовать что-то вроде этого:

  • ваша клиентская сторона вызывает через ajax

    ...
    var data = {
            id: id,
                id_schedule: id_schedule,
                id_tool: id_tool
            };
    $.ajax({
            url: '/Schedules/actionEditStuff',
            type: "POST",
            data: data,
            contentType: 'application/json; charset=utf-8',
            success: function (view) {
                    //load returned data into div? or popup?
            }
            , error: function (xhr, status, error) {
                    ...
            }
    });
    ...
    
  • и действие вашего контроллера

    public ActionResult actionEditStuff(....parameters...)
    {
            ...
            ...do your magic ...
            return PartialView("~/Views/_PartialViewThatShowsSomething.cshtml", ...pass model...);
    }
    
...