我只想在我的网页上显示数据,并允许用户单击按钮并返回一些更新的数据。
我有一个模型,如下所示:
public class ReportModel
{
public string ReportDate { get; set; }
public List<Common.Rep> ReportList { get; set; }
}
这是代表类:
public class Rep
{
public string ReportName { get; set; }
public int NumberOfRows { get; set; }
public string HasData { get; set; }
public bool checkBox { get; set; }
public string ResultMessage { get; set; }
}
现在我有一个控制器可以做到这一点:
此方法在页面加载时将数据返回到页面:
public JsonResult Index()
{
var model = new ReportModel();
model.ReportDate = "1/31/2014";
model.ReportList = new List<Models.Common.Rep>();
model.ReportList.Add(
new Models.Common.Rep()
{
ReportName ="test report",
NumberOfRows = 50,
HasData = "Yes",
checkBox = false,
ResultMessage = "Message"
});
return Json(model, JsonRequestBehavior.AllowGet);
}
现在我有我的观点:
<table>
<tr style="font-weight:bold">
<td>
Report Name
</td>
<td>
Number Of Rows
</td>
<td>
Has Data
</td>
<td>
Result Message
</td>
<td>
Check
</td>
</tr>
<tbody data-bind="foreach: Report">
<tr>
<td> <span data-bind="text: ReportName"></span></td>
<td><span data-bind="text: NumberOfRows"></span></td>
<td><span data-bind="text: HasData"></span></td>
<td><span data-bind="text: ResultMessage"></span></td>
<td><input type="checkbox" data-bind="checked: checkBox"></td>
</tr>
</tbody>
</table>
在同一页面上,我有我的脚本:
<script type="text/javascript" src="~/Scripts/knockout-2.2.0.js"></script>
<script type="text/javascript" language="javascript">
//SET INITIAL VALUES ON PAGE WITH KNOCKOUT
var initialModel = new KOViewModel(@Html.Raw(Json.Encode(Model)));
model.Date(initialModel.Date);
model.Report(initialModel.Report);
//SET THE KNOCKOUT OBSERVABLES
var viewmodel =
{
Date: ko.observable(initialModel.Date)
Report: ko.observableArray(initialModel.Report)
};
//APPLY KNOCKOUT BINDINGS
$(document).ready(function() {
ko.applyBindings(viewmodel);
});
当我运行页面时,我没有看到表,而只是页面顶部的 JSON 本身。这是 T 在页面上看到的内容: {"ReportDate":"1/31/2014","ReportList":[{"ReportName":"test report","NumberOfRows":50,"HasData":"Yes","checkBox":false,"ResultMessage":"Message"}]}
如何将 JSON 放入表中并链接可观察字段?
谢谢!
这是你需要开始让你的例子工作,所有这些都是用模仿的 json:
var json = {"ReportDate":"1/31/2014","ReportList":[{"ReportName":"test report","NumberOfRows":50,"HasData":"Yes","checkBox":false,"ResultMessage":"Message"}]};
// create a javascript representation of the c# object, with observables
var ViewModel = function(reportDate, reportList) {
self = this;
self.ReportDate = ko.observable(reportDate);
self.Report = ko.observable(reportList);
}
// Apply the bindings to your new object
ko.applyBindings(new ViewModel(json.ReportDate, json.ReportList));
有关工作示例,请参见此处:
http://jsfiddle.net/Tzce4/2/
其他一切都是正确的,因为我创建它所需要的只是直接复制和粘贴您的 json。