سلام استان رو دریافت میکنم فقط شهرها دریافت نمیشن..از کدفرست هم استفاده کردم
public IActionResult Index() { ViewBag.countries = _context.countries.ToList(); return View(); } public JsonResult getstatedbyid(int id) { List<state> list = new List<state>(); list = _context.states.Where(a => a.country.Id == id).ToList(); list.Insert(0, new state { Id = 0, Name = "انتخاب کنید" }); return Json(new SelectList(list, "Id", "Name")); }
اینم view
odel testDroup.Models.Country @{ ViewData["Title"] = "Index"; } <label asp-for="Name"></label> <select id="Countryid" name="Countrylist" asp-for="Id" asp-items='@(new SelectList( ViewBag.countries,"Id", "Name"))'> <option >select</option> </select> <select id="stateid" name="statelist" asp-for="Id" asp-items='@(new SelectList( string.Empty,"Id", "Name"))'></select> <script src="~/Scripts/jquery-1.10.2.js"></script> <script> $(function () { $("#Countryid").change(function () { var url = '@Url.Content("~/")' + "Cascade/getstatedbyid"; var ddlsource = "#Countryid"; $.getJSON(url, { id: $(ddlsource).val() }, function (data) { var item = ''; // $("#stateid").empty(); $("#stateid").html(items); $.each(data, function (i, row) { item += "<option value='" + row.value + "'>" + row.text + "</option>"; }); $("#stateid").html(items); }) }); }); </script>
اینم کد..مشکل چیه ممنون راهنمایی کنید البته از روی یه اموزش از یوتیوب
این row.textوجود نداره داخل اسکریپت یعنی text
اصلا جواب نمیده من asp core استفاده میکنم همش ارور میده ..روی روش شما
این لینک رو ببینید
سلام 4روز حیرونم ..هر اموزش هر کدی که بود داخل نت همه ررو نوشتم..ولی درست نشد که نشد..استان میاره ولی شهرها روو نمیاره..نمیدونم چکار کنم..
ممنون نمونه پروژه ای که با asp.net core باشه و کدفرست...کسی ارسال کنه..واقعا خسته شدم....
لاگ کنسول مرور گر را بررسی کنید ببینید خطا داره یا نه
لاگ کنسول ببرسی کردم ..مشکلی نیست داده ای داخل لاگ نمیاره فقط OPTIONخالی
اصلا من کلا کدها رو میزارم ممنون کسی ببینه چطوره..درضمن داخل یه ویدیو یوتیوب نگاه کردم همین مشکل رو داشت ولی امد PROXYرو داخل کد FALSEکرد..ولی من داخل کلاسها خودم ندیدمش که اضافه کنم..
public class Taps { [Key] public int IdTaps { get; set; } public string Title { get; set; } public virtual ICollection<Categories> Categories { get; set; } }
public class Types { [Key] public int IdTypes { get; set; } public string Title { get; set; } public int CategorieID { get; set; } [ForeignKey(nameof(CategorieID))] public virtual Categories Categories { get; set; } }
public class Categories { [Key] public int IdCategories { get; set; } public string Title { get; set; } public int TapID { get; set; } [ForeignKey(nameof(TapID))] public virtual Taps Taps { get; set; } public virtual ICollection<Types> Type { get; set; } }
اینم کنترل TapsController
public ActionResult Create() { ViewData["Type"] = new SelectList(_context.Type, "IdTypes", "Title"); ViewData["Category"] = new SelectList(_context.Categorie, "IdCategories", "Title"); // ViewData["CategorieID"] = new SelectList(_context.Categorie, "IdCategories", "IdCategories"); return View(); } public JsonResult getstatedbyid(int id) { List<Categories> list = new List<Categories>(); list = _context.Categorie.Where(a => a.IdCategories == id).ToList(); list.Insert(0, new Categories { IdCategories = 0, Title = "انتخاب کنید" }); return Json(new SelectList(list, "IdCategories", "Title")); }
اینم کد ویو ..و جاوا اسکریبت
<h2>Create</h2> <h4>Taps</h4> <hr /> <div> نوع </div> <div> @Html.DropDownList("Type", (SelectList)ViewBag.Type, "-- انتخاب ---", new { id = "rdbTyoe" }) @Html.ValidationMessageFor(model => model.Categories) </div> <div> دسته بندی </div> <div> @Html.DropDownList("Category", (SelectList)ViewBag.Category, "-- انتخاب ---", new { id = "rdbCategory" }) @Html.ValidationMessageFor(model => model.Categories) </div> <div> <a asp-action="Index">Back to List</a> </div> @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} } <script src="~/lib/jquery/dist/jquery.js"></script> <script type="text/javascript"> $('#rdbTyoe').change(function () { jQuery.getJSON('@Url.Action("getstatedbyid")', { id: $(this).attr('value') }, function (data) { $('#rdbCategory').empty(); jQuery.each(data, function (i) { var option = $('<option></option>').attr("value", data[i].IdCategories).text(data[i].Title); $("#rdbCategory").append(option); }); }); }); </script>
ممنون میشم ..کمک کنید مشکل کجاست
از شما میخوام یک debugger درون تابع جاوااسکریپتی قرار بدید تا بررسی آیا این تابع فراخوانی می شود یا خیر.
زمانی از تابع change استفاده می کنید باید element شما تغییر کند تا فراخوانی شود. برای همین هنگام بار گذاری صفحه باید آن را صدا بزنیم.
به این صورت:
$('#rdbTyoe').change(); $('#rdbTyoe').change(function () { /* more code */ };
سلام ..نه فراخوانی نمیشه!!!!!!
کاری که گفتم رو انجام بدید درست میشه
انجام دادم
<script src="~/lib/jquery/dist/jquery.js"></script> <script type="text/javascript"> $('#rdbTyoe').change(); $('#rdbTyoe').change(function () { jQuery.getJSON('@Url.Action("getstatedbyid")', { id: $(this).attr('value') }, function (data) { // $('#rdbCategory').empty(); jQuery.each(data, function (i) { var option = $('<option></option>').attr("value", data[i].IdCategories).text(data[i].Title); $("#rdbCategory").append(option); }); }); }); </script>
باید debugger رو بزارید سپس از inspect مرورگر استفاده کنید. به این صورت:
<script type="text/javascript"> $('#rdbTyoe').change(); $('#rdbTyoe').change(function () { debugger; jQuery.getJSON('@Url.Action("getstatedbyid")', { id: $(this).attr('value') }, function (data) { // $('#rdbCategory').empty(); jQuery.each(data, function (i) { var option = $('<option></option>').attr("value", data[i].IdCategories).text(data[i].Title); $("#rdbCategory").append(option); }); }); }); </script>
این دیگه
کلمه debugger رو داخل تابع change قرار بدید.
کسی نیست ببینه مشکل کجاست ؟ یا کد بالا فرستادم نگاهی بکنه ببینه مشکل چیه ...ویزوال 2017 هستش
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)