Помещение:
Получить выпадающий список содержимого на основе значения, выбранного в первом.
Литеральные данные возвращаются успешно.
Сбой запросов LINQ для текстового текста LINQ2SQL.
Будучи абсолютным новичком в этом материале MVC / LINQ / jQuery, я боролся за ЧАСЫ, пытаясь выяснить, что не так с моим пониманием кода. Когда я жестко запрограммировал свои значения, все работало нормально, но как только я попытался запросить текст данных LINQ2SQL, начались всевозможные странные вещи и, наконец, когда я продублировал результаты запроса в новый объект, все снова заработало! Простите за отсутствие у меня лингвистического мастерства, когда дело доходит до LINQ, но я думаю, что это связано с «связностью» данных LINQ2SQL. Когда я создаю другой список, представляющий запрашиваемые данные, все хорошо, но если я пытаюсь использовать сами запрашиваемые данные, мир jQuery разваливается (и без ошибок тоже - что затрудняет его выяснение).
Мне бы хотелось получить ссылку или объяснение "связности" LINQ2SQL и того, как / почему это проблема, особенно в таких ситуациях удаленного / асинхронного вызова!
См. Код ниже - надеюсь, что это имеет смысл и заранее спасибо :)
Базовая планировка:
<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);
}