绑定knockoutjs/ASP.NET中的映射与EF对象
问题描述:
我试图绑定选择并表的AJAX调用在ASP.NET与后端的EntityFramework未来对象的结果。
下面是脚本:绑定knockoutjs/ASP.NET中的映射与EF对象
<script type="text/javascript">
function QuizListViewModel() {
var self = this;
self.quizList = ko.observableArray([]);
}
var qlvm = new QuizListViewModel();
ko.applyBindings(qlvm);
function FetchQuizzes() {
$.getJSON(
"/DesktopModules/personify/QuizAdminDos/API/QuizAdmin/QuizList",
function (result) {
var mapping = {
'observe': ["IdQuiz", "Name"]
}
parsedJsonQuizzes = jQuery.parseJSON(result);
console.log(parsedJsonQuizzes);
ko.mapping.fromJS(parsedJsonQuizzes, mapping, qlvm.quizList);
});
}
$(document).ready(function() {
FetchQuizzes();
});
</script>
这里查看:
<select data-bind="options: quizList,
optionsText: function(quiz) { return quiz.Name() + '(Id: ' + quiz.IdQuiz() + ')'},
optionsCaption: 'Select a quiz...'"></select>
我已经通过我得到的对象从我的JSON回调调试验证。我也已经验证了“quizList”观察到有ko.mapping.fromJS调用后的值。但是,我的选择中没有显示任何内容。我甚至没有得到“optionsCaption”值。
我可以在直接结合EF对象(从DB产生)?
using (var db = new LinuxDatabase())
{
List<Quiz> qzs = db.Quizs.ToList();
db.ContextOptions.LazyLoadingEnabled = false;
var json = JsonConvert.SerializeObject(qzs);
return Request.CreateResponse(HttpStatusCode.OK, json);
}
感谢这里是从parsedJsonQuizzes的输出的console.log回来帮帮我!
答
我认为你需要将你的电话转到applyBindings
到你的$(documnent).ready
函数中,这样才能确保在你尝试绑定之前已经加载了DOM。
根据我所见过的所有例子,你不需要这样做: https://docs.microsoft.com/en-us/aspnet/core/client-side/knockout 虽然,我做了尝试你的解决方案,不幸的是它没有工作。 – Joe