مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

iran

عضویت از 1394/01/31

نمایش داده در DropDownList بکمک json

  • پنجشنبه 17 اسفند 1396
  • 22:57
تشکر میکنم

سلام
یک DropDownList دارم که می خواهم اسم شهرها را براساس کشوری که از یک DropDownList انتخاب میکنم نمایش بدهم 
کد DropDownList کشور بصورت زیر است 


<div class="form-group">
           @Html.LabelFor(model => model.CountryId, "Country",  htmlAttributes: new { @class = "control-label col-md-2" })
           <div class="col-md-10">
               @Html.DropDownList("Country", null, "-کشور را انتخاب کنید-", htmlAttributes: new { @class = "form-control" })
               @Html.ValidationMessageFor(model => model.CountryId, "", new { @class = "text-danger" })
           </div>
       </div>

درست نمایش میدهد
و کد 

public ActionResult LoadCity(int countryId)
       {
           return Json(db.T_B_City.Where(c => c.ParentId == countryId).Select(s => new
           {
               Id=s.ID,
               Name=s.Name
           }).ToList(),JsonRequestBehavior.AllowGet);
       }

را هم برای خواندن شهرها نوشته ام 
اما نمی دانم DropDownList شهرا چگونه بکمک jquery , gson پر کنم
لطفا راهنمای کنید

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 18 اسفند 1396
  • 09:03

براتون یک نمونه ضمیمه کردم 

فایل های ضمیمه

کاربر سایت

iran

عضویت از 1394/01/31

  • پنجشنبه 9 فروردین 1397
  • 11:01

سلام

مهندس با توجه به کد شما من کدهای زیر را  در برنامه ام ایجادکردم

 <div class="form-group">
            @Html.LabelFor(model => model.CountryId, "CountryId", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.CountryId, new SelectList(ViewBag.CountryId, "CityId", "Name"), "کشور", htmlAttributes: new { @class = "form-control",@id= "Country" })
                @Html.ValidationMessageFor(model => model.CountryId, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.CityId, "CityId", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.CityId, new SelectList(string.Empty, "CityId", "Name"), "شهر", htmlAttributes: new { @class = "form-control", @id = "City" })
                @Html.ValidationMessageFor(model => model.CityId, "", new { @class = "text-danger" })
            </div>
        </div>

و

        [HttpGet]
        public JsonResult LoadCity(int id)
        {
            return Json(db.Cities.Where(c => c.ParentId == id).Select(s => new
            {
                CityId = s.CityId,
                Name = s.Name
            }).ToList(), JsonRequestBehavior.AllowGet);
        }

و

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script>
        $("#Country").change(function () {
            var Id = $(this).val();
            $.ajax({
                type: "GET",
                url: '@Url.Action("LoadCity", "Home")',
                data: { id: Id},
                cache: false,
                success: function(html)
                {           
                    $("#City").html(html);
                } 
            });
        });
    </script>
}

اما هنگام اجرا وقتی کشور را انتخاب میکنم شهر را null قرار میدهد 
کدم را چگونه باید تغییر بدهم 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 9 فروردین 1397
  • 11:02

کد رو Trace کنید ببیند در کدام خط یا کدام قسمت مشکل داره

کاربر سایت

iran

عضویت از 1394/01/31

  • پنجشنبه 9 فروردین 1397
  • 11:24

سلام

کدهای سمت کنترلر درست کارمیکنه

و برای جاوااسکریپت هم در Console هیچ موردی را نشان نمیدهد

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 13 فروردین 1397
  • 19:09

عرض کردم Trace کنید تا متوجه بشید چرا اطلاعات نمایش داده نمیشه 

باید کدی که مشکل داره رو پیدا کنید 

کاربر سایت

sadeghpa80

عضویت از 1392/09/18

  • جمعه 17 فروردین 1397
  • 00:55

مهندس ببخشید من از نمونه شما در پروزه ام استفاده کردم اما در فرمی که چند تا دیگه فیلد هم داره

یکی از این فیلد ها بعد از ثبت کاربر با دیتابیس چک میشه و گه اروری باشه modelstate یه ارور add میکنم

ولی برمیگرده به صفحه اطلاعات Dropdown ها پاک شده و کاربر باید مجدد انتخاب کنه

راه حل چیه ؟

ممنون

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • جمعه 17 فروردین 1397
  • 07:53

موقع بازگشت باید خودتون ddl ها رو پر کنید و مقدار انتخاب شده را نمایش دهید

با استفاده از ViewBag پر کنید

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)