Как создать выпадающий список стран - PullRequest
0 голосов
/ 03 июля 2019

Я создаю проект, в котором мне нужно создать меню регистрации с выпадающим меню соответствующей страны.Я просто не знаю как.

Я пытался найти другие вещи, но не могу найти, как это сделать.Я работаю в MVC и просто знаю основы.

Я хочу сделать так, чтобы сначала требовался раскрывающийся список стран и обновлялся раскрывающийся список состояний без перезагрузки страницы

1 Ответ

0 голосов
/ 03 июля 2019

Большая часть кода пришла https://www.c -sharpcorner.com / блоги / каскадные-DropDownList-в-Asp-нет- * MVC 1003 * но было много изменений, чтобы преобразовать в то, что вы искали

Используйте это для вашей страны и штата в представлении

<div class="form-group">
        @Html.LabelFor(model => model.CountryStr, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
            @Html.DropDownListFor(model => model.CountryStr, ViewBag.Country as List<SelectListItem>, new { @class = "form-control" })
    </div>
</div>

<div class="form-group">
        @Html.LabelFor(model => model.StateStr, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.StateStr, new SelectList(string.Empty, "Value", "Text"), "--Select State--", new { @class = "form-control" })
        </div>
    </div>

и это под ним

<script src="~/Scripts/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">


        $(document).ready(function () {

            $("#CountryStr").change(function () {
                $("#StateStr").empty();
                $.ajax({
                    type: 'POST',
                    url: '@Url.Action("getState")',
                    dataType: 'json',
                    data: { id: $("#CountryStr").val() },
                    success: function (State) {

                        $.each(State, function (i, State) {
                            $("#StateStr").append('<option value="'
                                                       + State.Value + '">'
                                                 + State.Text + '</option>');
                        });
                    },
                    error: function (ex) {
                        alert('Failed.' + ex);
                    }
                });
                return false;
            })
        });
    </script>

добавьте это вверху, чтобы загрузить список стран (используя @ {}):

string[] whwhw = ListofCountries
IEnumerable<string>
why = whwhw;
SelectList CountryLit = new SelectList(why);

и поместите это в свой контроллер

public void bindCountry()
    {
        List<SelectListItem> li = new List<SelectListItem>();
        li.Add(new SelectListItem { Text = "--Select Country--", Value = "0" });

        cs.Open();
        SqlDataReader dr = (da.SelectCommand = new SqlCommand("SELECT * FROM Country", cs)).ExecuteReader();

        while (dr.Read())
        {
            li.Add(new SelectListItem { Text = dr.GetValue(1).ToString(), Value = dr.GetValue(0).ToString()});
            ViewBag.Country = li;
        }
        cs.Close();
    }  
    public JsonResult getState(int id)
    {
        List<SelectListItem> liStates = new List<SelectListItem>();

        liStates.Add(new SelectListItem { Text = "--Select State--", Value = "0" });
        cs.Open();
        SqlDataReader dr = (da.SelectCommand = new SqlCommand("SELECT * FROM State WHERE CountryId = " + id, cs)).ExecuteReader();

        int count = 0;
        while (dr.Read())
        {
            liStates.Add(new SelectListItem { Text = dr.GetValue(1).ToString(), Value = dr.GetValue(0).ToString() });
            ViewBag.State = liStates;
            count += 1;
        }
        cs.Close();
        PersonValues.Country = count;
        return Json(new SelectList(liStates, "Value", "Text", JsonRequestBehavior.AllowGet));
    }

и поставить

bindCountry();

перед тем, как вы вернетесь к просмотру страницы, выпадающие панели будут в

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