MVC modeline bağlanırken çalışmak için bağımlı bir liste almakla ilgili bir sorun yaşıyorum. Diğer çevrimiçi yanıtlarda statik listeler kullanıyorlar (işe alabiliyorum), ancak bunu gerçek verilerime bağlamak için son bir adımı atıyorum. Aşağıdaki kodu yaptığımda hiçbir şey olmuyor.MVC Bağımlı Liste modele bağlı (statik liste değil)
Tahminimce, listeyi ayarlamak için kullandığım javascript bölümünde ihtiyacım olan basit bir satır var ("ÇALIŞMA SAYFASI" uyarısı altında). Ya da yeni açılan listeyle açılır listeyi güncellemenin bir yolu olmalıdır (her yöntemi tek tek basmak yerine).
Denetleyici:
public class EMPLOYEEsController : Controller
{
private ApplicationDbContext db = new ApplicationDbContext();
public ActionResult Create()
{
ViewBag.STATEID = new SelectList(db.STATEs, "STATEID", "STATENAME");
ViewBag.CITYID = new SelectList(db.CITYs, "CITYID", "CITYNAME");
return View();
}
[HttpGet]
public ActionResult UpdateCity(string id)
{
SelectList CityList = new SelectList(db.CITYs.Where(x => x.STATEID.Equals(id)), "CITYID", "CITYNAME");
return Json(CityList, JsonRequestBehavior.AllowGet);
}
}
Görünüm:
@model myproj.Models.EMPLOYEE
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Create</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<script type="text/javascript" src="/scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(function() {
$('#STATEID').change(function() {
$.ajax({
url: '@Url.Action("UpdateCity")',
type: 'GET',
dataType: 'json',
cache: false,
data: { id: $(this).val() },
success: function (CityList) {
alert('WORKS SO FAR');
var citySelect = $('#CITYID');
citySelect.empty();
$.each(CityList, function (index, locations) {
citySelect.append(
$('<option/>')
.attr('value', CityList.CITYID)
.text(CityList.CITYNAME)
);
});
},
error: function() { alert('ERROR'); }
});
});
});
</script>
<div class="form-horizontal">
<h4>EMPLOYEE</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.EMPLOYEENAME, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.EMPLOYEENAME, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.EMPLOYEENAME, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.STATEID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.STATEID, (IEnumerable<SelectListItem>)ViewBag.STATEs, "Select State", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.STATEID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CITYID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.CITYID, (IEnumerable<SelectListItem>)ViewBag.CITYs, "Select City", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CITYID, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
$ .each (CityList'te, işlev (dizin, konumlar) {console.log (CityList, index, konumlar);} 'neyi gözlemliyorsunuz? – Jasen
My CityList konsolda güzel görünüyor. [Object, Object, Nesne, Nesne] Uygun Metin ve Değerle 4 detaylı Nesneye sahiptir. –
ViewBag.STATEID = ... 've' ViewBag.CITYID = ... 'yazım hatalarıdır. ViewBag.STATEs = ... 've' ViewBag.CITYs =… 'dır, aksi halde başka sorunlarınız vardır. –