Как закрыть окно веб-браузера из кода за страницей после завершения запроса post формы, в веб-приложении razor с использованием .netcore

#c# #asp.net-core #post #razor-pages

#c# #asp.net-core #Публикация #страницы razor

Вопрос:

У меня есть страница в моем приложении razor (EditMode.cshtml), которая содержит форму. Когда эта форма отправляет запрос post на страницу, находящуюся за ее кодом (EditMode.cshtml.cs), я хотел бы закрыть страницу после завершения запроса post со страницы codebehind. Есть ли способ сделать это?

Я просмотрел overflow и вижу много примеров MVC, но я не вижу ни одного для веб-приложений razor. Любая помощь будет высоко оценена. Заранее благодарю вас.

 //EditMode.cshtml.cs
public IActionResult OnPost()
        {
            VthaForms test = VthaForm;
            List<VthaWorkflows> test2 = VthaFormWorkflows;
            return null; //I've tried inputting a couple MVC solutions here, but to no avail.
        }
  

Ответ №1:

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

 //EditMode.cshtml
<script>
    $(function() {
        var ispostback = '@Model.IsPostBack';
        if (ispostback=='True') {
            window.close();
        }
   });
</script>

//EditMode.cshtml.cs
[BindProperty]
public bool IsPostBack { get; set; }

public IActionResult OnPost()
{
    VthaForms test = VthaForm;
    List<VthaWorkflows> test2 = VthaFormWorkflows;
    IsPostBack = true; //set the binded model property here, before postback
    return Page();
}
  

все еще довольно новичок в razor .netcore, поэтому прошу прощения, если этот вопрос был тривиальным. Надеюсь, это может помочь кому-то еще в дальнейшем. Хорошего дня 🙂

Комментарии:

1. Лол, это не вуду, это просто JavaScript. Вы не можете закрыть браузер из серверного кода, потому что браузер не запущен на сервере, поэтому сервер не имеет над ним никакого контроля. Таким образом, вместо этого вы используете JavaScript, который запускается внутри браузера. Довольно логично, если подумать … Рад, что вы нашли решение.

2. ценю поддержку, мой друг, и хорошее объяснение!