Я довольно новичок в MVC3, и я начал работу над новым проектом с кодом jQuery / MVC3 / EF 4.1 и сначала изучал существующий код.Одна часть кода извлекает значения из БД через действие Controller, когда когда-либо изменяется значение определенного раскрывающегося списка (событие SubtypeID.change).Вот jQuery:
$.getJSON(
"/StudyDesign/GetSubtypes?typeId=" + typeId,
function (data) {
var theDropDown = document.getElementById("SubtypeID");
if (data.length === 0) {
theDropDown.disabled = true;
}
$.each(data, function () {
$("#SubtypeID").append($('<option>').attr('value', this.SubtypeID).text(this.Name));
});
}
);
А вот действие контроллера:
[OutputCache(Duration = int.MaxValue, VaryByParam = "typeId", Location = OutputCacheLocation.Server)]
public JsonResult GetSubtypes(int typeId)
{
var studyType = this._studyDesignRepository.StudyTypes.SingleOrDefault(s => s.StudyTypeID == typeId);
return studyType == null ? this.Json(new List<Subtype>()) : this.Json(studyType.Subtypes.Select(s => new { s.SubtypeID, s.Name }).ToList(), JsonRequestBehavior.AllowGet);
}
Это прекрасно работает, но в нашем конструкторе контроллера у нас есть много кода, который получает различные значения из БДкоторые заполняют другие выпадающие списки и сетки и т. д. После первой загрузки страницы нам не нужно снова получать эти значения, поскольку они уже находятся на странице, но каждый раз, когда вызывается событие .change и вызывается StudyDesign / GetSubtypes, конструктор контроллера запускается и снова выполняет все вызовы базы данных.Это кажется ненужным, поэтому мне интересно,
- Есть ли лучший способ сделать это?
- можем / должны ли мы получить данные json другим способом?
- Должны ли мы иметь действия / методы json в отдельном контроллере?
Заранее спасибо:)