سلام
یک 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 پر کنم
لطفا راهنمای کنید
سلام
مهندس با توجه به کد شما من کدهای زیر را در برنامه ام ایجادکردم
<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 قرار میدهد
کدم را چگونه باید تغییر بدهم
کد رو Trace کنید ببیند در کدام خط یا کدام قسمت مشکل داره
سلام
کدهای سمت کنترلر درست کارمیکنه
و برای جاوااسکریپت هم در Console هیچ موردی را نشان نمیدهد
عرض کردم Trace کنید تا متوجه بشید چرا اطلاعات نمایش داده نمیشه
باید کدی که مشکل داره رو پیدا کنید
مهندس ببخشید من از نمونه شما در پروزه ام استفاده کردم اما در فرمی که چند تا دیگه فیلد هم داره
یکی از این فیلد ها بعد از ثبت کاربر با دیتابیس چک میشه و گه اروری باشه modelstate یه ارور add میکنم
ولی برمیگرده به صفحه اطلاعات Dropdown ها پاک شده و کاربر باید مجدد انتخاب کنه
راه حل چیه ؟
ممنون
موقع بازگشت باید خودتون ddl ها رو پر کنید و مقدار انتخاب شده را نمایش دهید
با استفاده از ViewBag پر کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)