Wywoływanie kontrolera z poziomu widoku Razor

0

Cześć, pracuję nad stroną internetową, w której chcę zastosować stronę ładującą, kiedy strona wykonuje działania w tle. W tym celu przygotowałem taki widok:

@model AppCore.Models.ConnectionModel

@{
    ViewData["Title"] = "Index";
    Layout = "_InstallLayout";
}

@if (Model != null)
{
    <div class="d-flex justify-content-center">
        <div class="spinner-border text-info" role="status">
            <span class="sr-only">Loading...</span>
        </div>
    </div>

    if (WoodStore.AppCore.SqlConnector.IsConnection(WoodStoreApp.AppCore.Crypto.GetHash(Model.ConnectionString)))
    {
        WoodStore.AppCore.Serialization.Serialize(new System.IO.FileStream(AppCore.Enums.Paths.ConnectionStringPath, System.IO.FileMode.OpenOrCreate), new AppCore.Models.ConnectionModel() { ConnectionString = WoodStoreApp.AppCore.Crypto.GetHash(Model.ConnectionString)}, typeof(AppCore.Models.ConnectionModel));
    }
}
else
{
    <div class="row justify-content-center">
        <div class="col-md-4">
            <form asp-action="Index" method="post">
                <div class="form-group">
                    <label>Połączenie z bazą danych</label>
                    <input asp-for="ConnectionString" class="form-control" />
                </div>
                <div class="form-group">
                    <input type="submit" value="Create" class="btn btn-primary" />
                </div>
            </form>
        </div>
    </div>
}

W if gdzie sprawdzam, czy jest połączenie z bazą danych zapisuje połączenie do pliku json i chciałbym, aby po tej operacji widok uruchomił konkretną metodę w kontrolerze.

Chodzi mi o to, że chcę, aby po tym jak użytkownik wprowadzi dane do formularza i wyśle formularz to strona zachowała się w taki sposób, że aplikacja wykonuje działania związane z obsługą formularza, a użytkownik widzi stronę ładowania. W tym przypadku próbuję to zrobić za pomocą widoku, w którym to chcę zrealizować, ale może istnieje metoda, która pozwala to wykonać z poziomu samego kontrolera, czyli w momencie wykonywania działań pokazuję się widok ładowania, a po zakończeniu działań widok przełącza się do następnego.

0
adrian95 napisał(a):

W if gdzie sprawdzam, czy jest połączenie z bazą danych zapisuje połączenie do pliku json i chciałbym, aby po tej operacji widok uruchomił konkretną metodę w kontrolerze.

Nie rozumiem tej koncepcji. Sprawdznie polaczenia w widoku? Wysylanie polaczenia jsonem?

Niedlugo moze baza danych bedzie html generowala...

Jesli chcesz sie przelaczyc na inny widok po zakonczeni dzialania w akcji kontrolera musisz zrobic redirecta lub zwrócić inny widok

https://stackoverflow.com/questions/546461/asp-net-mvc-redirect-to-a-different-view

2

Chodzi Ci o ajaxa.
Zrób sobie drugi widok (partial view), w którym umieścisz wszystko co z modelem związane. Następnie w tym swoim widoku umieść pustego diva. Wywołaj ajaxa do kontrolera. Na początku ajaxa pokaż loader na pustym divie, a po skończonym requeście ukryj loader i pokaż odpowiedź z serwera.

Słowa kluczowe:

  • jquery ajax
  • bootstrap loader

1 użytkowników online, w tym zalogowanych: 0, gości: 1