【发布时间】:2011-09-12 08:24:45
【问题描述】:
我对 MVC3 还很陌生,我已经开始着手处理一个新的 jQuery / MVC3 / EF 4.1 代码优先项目,并且已经检查了一些现有代码。当某个下拉列表的值发生变化时(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);
}
这很好用,但是在我们的 Controller 构造函数中,我们有很多代码可以从填充其他下拉列表和网格等的 db 中检索不同的值。第一次加载页面后,我们不需要获取这些值再次出现,因为它们已经在页面中,但是每次触发 .change 事件并调用 StudyDesign/GetSubtypes 时,Controller 构造函数都会运行并再次执行所有 db 调用。这似乎没有必要,所以我想知道
- 有没有更好的方法来做到这一点?
- 我们可以/应该以不同的方式检索 json 数据吗?
- 我们是否应该将 json 操作/方法放在单独的控制器中?
提前致谢:)
【问题讨论】:
标签: json asp.net-mvc-3