Mam widok. Chcę go załadować, aby uzyskać wszystkie informacje, a następnie kliknij Edytuj lub Usuń przycisk , aby coś zrobić. Po kliknięciu przycisk Edytuj , mam nadzieję, że trafi do innego widoku.

    @model Models.CountryLanguagesModel

@{
    ViewBag.Title = "Language";
}


<div class="span4 proj-div text-center" data-toggle="modal" data-target="#addLanguageModal">
    <u>Add Language</u>
    <div><br /> </div>

    <table class="table table-bordered table-dark-header table-responsive">
        <tr>
            <th class="text-center">Language Name</th>
            <th class="text-center">Welcome Message</th>
            <th></th>
        </tr>


        @foreach (var item in Model.CountryLanguages)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.LanguageName)</td>
                <td>@Html.DisplayFor(modelItem => item.WelcomeMessage)</td>

            </tr>
        }
    </table>
</div>

<div class="container">
    <div class="col-md-8 col-md-offset-2">
        <button class="btn btn-success" id="editLanguage">Edit</button>
        <button class="btn btn-danger" id="deleteLanguage">Delete</button>
    </div>
</div>

<div class="modal fade" id="addLanguageModal">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h3>Add Language</h3>
            </div>
            <div class="modal-body">
                <div class="form-group">

                </div>
                <div class="form-group">
                    <div class="left">
                        <label>Language Name:</label>
                    </div>
                    <div class="right">
                        <input type="text" class="form-control" name="languageName" id="languageName" />
                    </div>
                </div>

                <div class="form-group">
                    <div class="left">
                        <label>Welcome Messagee:</label>
                    </div>
                    <div class="right">
                        <input type="text" class="form-control" name="welcomeMessage" id="welcomeMessage" />
                    </div>
                </div>

            </div>
            <div class="modal-footer">

                <button class="btn btn-gray" data-dismiss="modal" aria-hidden="true">Close</button>
                <button class="btn btn-primary" id="addLanguageBtn">Save</button>
            </div>
        </div>
    </div>
</div>


@section scripts
{
    <script type="text/javascript">
        $(document).ready(function () {
            $("#addLanguageBtn").on("click", function (evt) {
                var CountryId = @Model.CountryId;
                var languageName = $("#languageName").val();
                var welcomeMessage = $("#welcomeMessage").val();
                $.post("/Country/AddLanguage", { id: CountryId, languageName: languageName, welcomeMessage: welcomeMessage }, function (data) {

                    $("#languageName").val("");
                    $("#welcomeMessage").val("");
                    $("#addLanguageModal").modal('hide');
                });
            });

            $("#editLanguage").on("click", function (evt) {
                var CountryId = @Model.CountryId;
                $.post("/Country/LanguageEdit", { id: CountryId }, function () {
                });
            });

            $("deleteLanguage").on("click", function (evt) {
                var CountryId = @Model.CountryId;
                $.post("/Country/LanguageDelete", { id: CountryId }, function () {
                });
            });
        });
    </script>
}

Teraz pytanie jest wtedy, gdy załadowana strona, znalazłem kod, który osiągnął skrypt zdarzenia kliknięcia. To jest dziwne. Po kliknięciu przycisku nie dotrze do skryptu. Ale trafi do metody działania kontrolera,

 [HttpPost]
    public ActionResult LanguageEdit(MyModel model)
    {

Myślę, że jakiś głupi błąd powoduje, że wydarzenie Onclick nie jest prawidłowo zwolnione, ale nie mogę tego zrozumieć.

EDYTUJ

 public ActionResult LanguageEdit(int id)
    {
        var model = new CountryLanguageModel();
        model.CountryId = id;
        model.CountryLanguageQuestion = MyService.GetQuestion(x => x.CountryId == id);
        return View(model);
    }
0
Bigeyes 26 czerwiec 2017, 23:49

3 odpowiedzi

Najlepsza odpowiedź

Czy możesz zmienić przycisk do A?

 <button class="btn btn-success" id="editLanguage">Edit</button>

Do

<a href="/Country/LanguageEdit?id=@Model.CountryId" class="btn btn-success" />

Więcej informacji

  1. Jeśli chcesz uzyskać jakikind HTML, użyj httpget zamiast httppost. Użyj httppost, jeśli chcesz wysłać jakieś informacje, ten serwer powinien na przykład oszczędzać. Użyj httpget, jeśli chcesz, aby jakiś widok (na przykład otrzymasz nowy widok),

  2. Twoja akcja wymagała "model MyModel", a nie identyfikator.

0
mersey 26 czerwiec 2017, 21:22

Zgodnie z twoim komentarzem możesz uzyskać to zachowanie:

Dlaczego został zwolniony po załadowaniu strony, nie klikałem przycisku w ogóle.

Gdy kod JavaScript nie wewnątrz przycisku kliknij zdarzenie, a zamiast tego znajduje się na którymkolwiek z drugiego zdarzenia, taki dokument gotowy lub ładunek strony ..Etc.

Więc sprawdź zdarzenie JavaScript i na pewno otrzymasz kierunek do rozwiązania.

Po sprawdzeniu, jeśli nadal miałeś ten sam problem. uprzejmie pokaż nam swój JavaScript, aby był przydatny, aby pomóc Ci dalej

Dzięki

Karthik.

0
Karthik Elumalai 27 czerwiec 2017, 01:35

Dodaj atrybut typu "przycisk" do przycisków, jeśli nie będzie zachowywać się jako przycisk przesyłania.

1
Silvano González 26 czerwiec 2017, 20:54