почему моя страница всегда перенаправляет на представление actionmethod, которое не существует, а не возвращается к представлению, из которого был вызван actionmethod - PullRequest
0 голосов
/ 03 мая 2020

У меня есть модальная форма, в которой уже есть кнопка отправки. Теперь я хочу выполнить проверку на стороне сервера для одного из данных в форме. эта проверка будет означать возвращение ответа пользователю в модальной форме, если данные существуют или нет. Я использую ссылку действия HTML для вызова метода действия с ajax.

<div class="modal-body">
                @using (Html.BeginForm("CreateSchool", "School", FormMethod.Post, new { enctype = "multipart/form-data", @class = "modal-form", id = "createSchoolForm" }))
                {
                    @Html.AntiForgeryToken()
                    <div class="row forms">

                        <div class="form-group col-xs-12">
                            <label class="control-label col-xs-12" for="createSchool_Name">
                                School Name <span class="text-danger">*</span>
                            </label>
                            <input type="text" class="form-control col-xs-10" name="Name" id="createSchool_Name" />
                        </div>

                        <div class="form-group col-xs-12">
                            <label class="control-label col-xs-12" for="image">
                                School Logo
                            </label>
                            <div class="col-md-10">
                                <input type="file" accept="image/*" name="image" id="createSchool_image" />
                                <img id="img-header-create" class="img-responsive" style="height: 100px;" />

                            </div>
                        </div>

                        <div class="form-group col-xs-12">
                            <label class="control-label col-xs-12" for="createSchool_Email">
                                Contact Email <span class="text-danger">*</span>
                            </label>
                            <input type="text" name="ContactEmail" class="form-control col-xs-12" id="createSchool_Email" />
                        </div>

                        <div class="form-group col-xs-12">
                            <label class="control-label col-xs-12" for="createSchool_Number">
                                Contact Number <span class="text-danger">*</span>
                            </label>
                            <input type="text" name="ContactNumber" class="form-control col-xs-12" id="createSchool_Number" />
                        </div>

                        <div class="form-group col-xs-12">
                            <label class="control-label col-xs-4" for="createSchool_Subdomain">
                                School Subdomain <span id="domainspan"></span>
                            </label>
                            @Html.ActionLink("Check if Sub-Domain is available", "CheckDomain", null, new { @class = "col-xs-3", id = "CheckDomain" })
                            <p id="subdomainresult" class="col-sm-3">me</p>
                            @*<input type="submit" id="CheckDomain" name="CheckDomain" value="Check Sub Domain" class=" text-uppercase" />*@
                            @*<input  id="CheckDomain_submit"> Check SubDOmain</input>*@
                            <input type="text" name="Subdomain" class="form-control col-xs-12" id="createSchool_Subdomain" />
                        </div>

                        <div class="form-group col-xs-12" style="margin-bottom: 25px;">
                            <label class="control-label col-xs-12" for="createSchool_StudentsCanEnrollForModules">
                                Students Are Allowed To Enroll For Modules (<a href="@Url.Action("UsersCanEnrollForModules", "Help")" target="_blank">Learn More</a>)
                            </label>
                            <div class="col-xs-10">
                                <div class="forms__checkbox">
                                    <input type="checkbox" name="StudentsCanEnrollForModules" class="checkbox" id="createSchool_StudentsCanEnrollForModules" checked />
                                </div>
                            </div>
                        </div>

                        <div class="form-group col-xs-12" style="margin-bottom: 25px;">
                            <label class="control-label col-xs-12" for="createSchool_PrivateSchool">
                                This is a Private School (<a href="@Url.Action("PrivateSchools", "Help")" target="_blank">Learn More</a>)
                            </label>
                            <div class="col-xs-10">
                                <div class="forms__checkbox">
                                    <input type="checkbox" name="PrivateSchool" class="checkbox" id="createSchool_PrivateSchool" />
                                </div>
                            </div>
                        </div>

                        <div class="form-group col-xs-12">
                            <label class="control-label">
                                Description
                            </label>
                            @*<textarea type="text" name="Description" class="form-control col-xs-12" id="createSchool_Description"></textarea>*@
                            <div id="createSchool_Description_div" style="height:300px;"></div>
                        </div>

                        <div class="form-group col-xs-12">
                            <input type="button" id="createSchool_submit" value="Create" class="btn btn-success text-uppercase" />
                            <button type="button" class="btn btn-default text-uppercase" data-dismiss="modal">Close</button>
                            <img class="preloader_image" style="height: 30px" src="~/images/loadingicon_large.gif" />
                        </div>
                    </div>
                }

            </div>

Это мой код jquery ajax, который вызывает метод действия для проверки ввода пользователя

 $("#CheckDomain").click(function () {
            debugger;

                var sch = new Object();
                sch.SubDomain = $('#createSchool_Subdomain').val();

                if (sch != null) {
                    $.ajax({
                        url: "/School/CheckDomain",
                                //url: "@Url.Action("CheckDomain", "School")",
                        type: "POST",
                        data: JSON.stringify(sch),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (response) {
                            debugger;
                            if (response != null) {

                                switch (response) {
                                    case true:
                                        //$("#subdomainresult").html("Submdomain already exists ");
                                        alert("Submdomain already exists " );
                                        break;
                                    case false:
                                        alert("Submdomain  is available ");
                                        //$("#subdomainresult").html("Submdomain  is available ");

                                        break;
                                    default:
                                }
                            } else {
                                alert("Please enter a subdomain to check availability");
                            }
                        },
                        failure: function (response) {
                            alert(response.responseText);
                        },
                        error: function (response) {
                            alert(response.responseText);
                        }
                    });
                }  
            });

это мой метод действия

    [HttpPost]
    public  ActionResult CheckDomain(CreateSchoolViewModel sch)
    {

        string SubDomain=    sch.Subdomain;
        if (!string.IsNullOrWhiteSpace(SubDomain))
        {
            var IsSubdomianAvailable = Util.getSchoolFromSubdomain(databaseHandler, SubDomain);
            if (IsSubdomianAvailable == null)
            {
                return Json(false, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(true, JsonRequestBehavior.AllowGet);
            }
        }


        return Json(null, JsonRequestBehavior.AllowGet);
    }

страница всегда пытается перенаправить на представление имени действия (checkdomian), а не оставаться на странице

1 Ответ

0 голосов
/ 03 мая 2020

Эта строка

@Html.ActionLink("Check if Sub-Domain is available", "CheckDomain", null, new { @class = "col-xs-3", id = "CheckDomain" })

может быть заменена ссылкой со значением href, установленным на javascript:void(0)

<a id='CheckDomain' href='javascript:void(0)' class='col-xs-3'>Check if Sub-Domain is available</a>

Ссылка может быть недействительной, поскольку существует JQuery щелкните обработчик события, прикрепленный к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...