Помещение: Получите содержимое выпадающего списка на основе значения, выбранного в первом. Литеральные данные успешно возвращаются. Запросы LINQ в LINQ2SQL Datacontext завершаются с ошибкой.ASP.NET MVC, jQuery/AJAX каскадирование выпадающих списков с LINQ2SQL?
Будучи полным новичком в этом материале MVC/LINQ/jQuery, я сражался за ЧАСЫ, пытаясь понять, что было не так с моим пониманием кода. Когда я жестко закодировал свои значения, все работало нормально, но как только я попытался выполнить запрос к datacontext LINQ2SQL, начались всевозможные сверхъестественные вещи, и, наконец, когда я дублировал результаты запроса в новый объект, все снова работало! Простите мое отсутствие лингвистической доблести, когда дело доходит до LINQ, но, я думаю, это связано с «связностью» данных LINQ2SQL. Когда я создаю еще один список, представляющий запрошенные данные, все хорошо, но если я попытаюсь использовать сами запрошенные данные, мир jQuery развалится (и без ошибок тоже - что затруднило его выяснение).
В основном я хотел бы упомянуть о «связности» LINQ2SQL или о том, как/почему это проблема, особенно в этих ситуациях удаленного/асинхронного вызова!
Смотрите ниже код - надеюсь, что это имеет смысл & спасибо заранее :) Basic Layout:
<script type="text/javascript">
$(document).ready(function() {
$("#CaseTypeCategoryId").change(function() {
$.getJSON("/Cases/CaseNatures", { caseTypeCategoryId: $("#CaseTypeCategoryId option:selected").val() }, function(data) {
$("#CaseNatureId option").remove();
$("#CaseNatureId").fillSelect(data);
});
});
});
</script>
<p>
<label for="CaseTypeCategoryId">Case Type:</label>
<%= Html.DropDownList("CaseTypeCategoryId") %>
</p>
<p>
<label for="CaseNatureId">Case Nature</label>
<select id="CaseNatureId" name="CaseNatureId></select>
</p>
Controller.aspx
Первоначально это был просто
SelectList() { new ListItem() { Text = "--Select A Case Nature--", Value = "" }}и он работал просто отлично ! Тогда я попытался
public JsonResult CaseNatures(int caseTypeCategoryId) { return this.Json(_caseService.GetCaseNatures(caseTypeCategoryId) .ToList()); }
Это не удалось - не JavaScript ошибок, никаких проблем компиляции, не мог понять, пока я не пытался сбрасывать данные в новый список вручную, и я, наконец, остановились на:
public JsonResult CaseNatures(int caseTypeCategoryId) { List returnList = new List(); returnList.Add(new ListItem() { Text = "--Select A Case Nature--", Value = "" }); _caseService.GetCaseNatures(caseTypeCategoryId) .ToList() .ForEach(p => returnList.Add(new ListItem() { Value = p.CaseNatureId.ToString(), Text = p.CaseNatureText })); return this.Json(returnList); }
Неужели никто не может помочь мне найти хорошую ссылку, где я могу узнать об этих и подобных проблемах с LINQ2SQL? – feemurk