Reputation: 1334
I am lil bit headache, because I don't know where is the problem. I have the following controller:
public JsonResult GetActivitySubType(int typeId)
{
var data = (from a in _db.ActivitySubTypes
where a.ActivityTypeId == typeId
select new
{
a.ActivitySubTypeId, a.ActivitySubTypeName
}
).ToList();
return Json(data);
}
public IActionResult Index()
{
ViewData["ActivityTypeId"] = new SelectList(_db.ActivityTypes.OrderBy(o => o.ActivityTypeName), "ActivityTypeId", "ActivityTypeCode");
return View();
}
Then on my View. I have the following code:
<select asp-for="ActivityTypeId" asp-items="ViewBag.ActivityTypeId"><option value="">Select</option></select>
<select id="ActivitySubTypeId" asp-for="ActivitySubTypeId"></select>
<script type="text/javascript">
$(document).ready(function () {
$("#ActivityTypeId").change(function () {
$.get("GetActivitySubType", { typeId: $("#ActivityTypeId").val() }, function (data) {
$("#ActivitySubTypeId").empty();
$.each(data, function (index, row) {
$("#ActivitySubTypeId").append("<option value='" + row.ActivitySubTypeId + "'>" + row.ActivitySubTypeName + "</option>")
});
});
})
});
</script>
When I select the ActivityType
, it loaded undefined
on my select ActivitySubType
. Am I missed something?
Thanks a lot.
Upvotes: 0
Views: 40
Reputation: 36625
The naming convention for response in asp.net core is camel case
instead of pascal case
.
Change like below:
$("#ActivitySubTypeId").append("<option value='" + row.activitySubTypeId + "'>" + row.activitySubTypeName + "</option>")
Upvotes: 2