gpt4 book ai didi

jquery - 使用 KnockoutJS 映射插件和 MVC 3 创建基本网格

转载 作者:行者123 更新时间:2023-12-03 22:17:15 24 4
gpt4 key购买 nike

我到处搜索并尝试了各种模式,但似乎无法让它正常工作。有一次我让它工作时,有太多代码,我认为必须有一种更简单的方法,但现在它完全损坏了。我的目标...了解如何使用 KO 映射和 MVC 来加载网格的基础知识...并可能使用表单来更新它。我找不到任何适合我的情况的例子。这就是我现在的心情。

这是我的行动:

public JsonResult List()
{
var result = new JsonResult();
result.Data = _service.GetWeightStats();

return Json(result, JsonRequestBehavior.AllowGet);
}

这是我的类(class):

public class WeightStat
{
public int Id { get; set; }
[Required]
public double Weight { get; set; }
public double? Neck { get; set; }
public double? Chest { get; set; }
public double? Bicept { get; set; }
public double? Waist { get; set; }
public double? Hip { get; set; }
public double? Thigh { get; set; }
public double? Calf { get; set; }
[Required]
public DateTime Date { get; set; }
[Required]
public string TimeOfDay { get; set; }
[Required]
public string DietBehavior { get; set; }

}

这是我的模板行:

<tbody data-bind='template: {name: "statRowTemplate", foreach: data.Data }'></tbody>

这是我的模板:

<script id="statRowTemplate" type="text/html">
<tr data-bind="attr: { id: Id }">
<td><span data-bind="text: Date"></span></td>
<td><span data-bind="text: TimeOfDay"></span></td>
<td><span data-bind="text: DietBehavior"></span></td>
<td><span data-bind="text: Weight"></span></td>
<td><span data-bind="text: Neck"></span></td>
<td><span data-bind="text: Chest"></span></td>
<td><span data-bind="text: Bicept"></span></td>
<td><span data-bind="text: Waist"></span></td>
<td><span data-bind="text: Hip"></span></td>
<td><span data-bind="text: Thigh"></span></td>
<td><span data-bind="text: Calf"></span></td>
</tr>
</script>

这是我的 KO JS:

<script type="text/javascript">

var data = $.getJSON('WeightTracker/List');

var viewModel = ko.mapping.fromJSON(data);

ko.mapping.updateFromJSON(viewModel, data);

ko.applyBindings(viewModel);

从操作中返回 JSON:

{"ContentEncoding":null,"ContentType":null,"Data":[{"Id":1,"Weight":195.3,"Neck":10.3,"Chest":34.6,"Bicept":13.2,"Waist":34,"Hip":34,"Thigh":16.4,"Calf":8.8,"Date":"\/Date(1302554017067)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":2,"Weight":194.3,"Neck":10.157142857142858,"Chest":34.4,"Bicept":13,"Waist":33.5,"Hip":33.5,"Thigh":16.2,"Calf":8.6000000000000014,"Date":"\/Date(1302640417070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":3,"Weight":193.3,"Neck":10.014285714285714,"Chest":34.2,"Bicept":12.799999999999999,"Waist":33,"Hip":33,"Thigh":15.999999999999998,"Calf":8.4,"Date":"\/Date(1302726817070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":4,"Weight":192.3,"Neck":9.8714285714285719,"Chest":34,"Bicept":12.6,"Waist":32.5,"Hip":32.5,"Thigh":15.799999999999999,"Calf":8.2000000000000011,"Date":"\/Date(1302813217070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":5,"Weight":191.3,"Neck":9.72857142857143,"Chest":33.800000000000004,"Bicept":12.399999999999999,"Waist":32,"Hip":32,"Thigh":15.599999999999998,"Calf":8,"Date":"\/Date(1302899617070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":6,"Weight":190.3,"Neck":9.5857142857142872,"Chest":33.6,"Bicept":12.2,"Waist":31.5,"Hip":31.5,"Thigh":15.399999999999999,"Calf":7.8000000000000007,"Date":"\/Date(1302986017070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":7,"Weight":189.3,"Neck":9.4428571428571431,"Chest":33.4,"Bicept":12,"Waist":31,"Hip":31,"Thigh":15.2,"Calf":7.6000000000000005,"Date":"\/Date(1303072417070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":8,"Weight":188.3,"Neck":9.3,"Chest":33.2,"Bicept":11.799999999999999,"Waist":30.5,"Hip":30.5,"Thigh":14.999999999999998,"Calf":7.4,"Date":"\/Date(1303158817070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":9,"Weight":187.3,"Neck":9.1571428571428584,"Chest":33,"Bicept":11.6,"Waist":30,"Hip":30,"Thigh":14.799999999999999,"Calf":7.2000000000000011,"Date":"\/Date(1303245217070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":10,"Weight":186.3,"Neck":9.0142857142857142,"Chest":32.800000000000004,"Bicept":11.399999999999999,"Waist":29.5,"Hip":29.5,"Thigh":14.599999999999998,"Calf":7.0000000000000009,"Date":"\/Date(1303331617070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":11,"Weight":185.3,"Neck":8.8714285714285719,"Chest":32.6,"Bicept":11.2,"Waist":29,"Hip":29,"Thigh":14.399999999999999,"Calf":6.8000000000000007,"Date":"\/Date(1303418017070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":12,"Weight":184.3,"Neck":8.72857142857143,"Chest":32.4,"Bicept":11,"Waist":28.5,"Hip":28.5,"Thigh":14.2,"Calf":6.6000000000000005,"Date":"\/Date(1303504417070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":13,"Weight":183.3,"Neck":8.5857142857142872,"Chest":32.2,"Bicept":10.799999999999999,"Waist":28,"Hip":28,"Thigh":13.999999999999998,"Calf":6.4,"Date":"\/Date(1303590817070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":14,"Weight":182.3,"Neck":8.4428571428571431,"Chest":32,"Bicept":10.6,"Waist":27.5,"Hip":27.5,"Thigh":13.799999999999999,"Calf":6.2000000000000011,"Date":"\/Date(1303677217070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":15,"Weight":181.3,"Neck":8.3,"Chest":31.8,"Bicept":10.399999999999999,"Waist":27,"Hip":27,"Thigh":13.599999999999998,"Calf":6.0000000000000009,"Date":"\/Date(1303763617070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":16,"Weight":180.3,"Neck":8.1571428571428584,"Chest":31.6,"Bicept":10.2,"Waist":26.5,"Hip":26.5,"Thigh":13.399999999999999,"Calf":5.8000000000000007,"Date":"\/Date(1303850017070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":17,"Weight":179.3,"Neck":8.014285714285716,"Chest":31.400000000000002,"Bicept":10,"Waist":26,"Hip":26,"Thigh":13.2,"Calf":5.6000000000000005,"Date":"\/Date(1303936417070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":18,"Weight":178.3,"Neck":7.8714285714285719,"Chest":31.200000000000003,"Bicept":9.7999999999999989,"Waist":25.5,"Hip":25.5,"Thigh":12.999999999999998,"Calf":5.4,"Date":"\/Date(1304022817070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":19,"Weight":177.3,"Neck":7.7285714285714295,"Chest":31,"Bicept":9.6,"Waist":25,"Hip":25,"Thigh":12.799999999999999,"Calf":5.2000000000000011,"Date":"\/Date(1304109217070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"},{"Id":20,"Weight":176.3,"Neck":7.5857142857142863,"Chest":30.8,"Bicept":9.3999999999999986,"Waist":24.5,"Hip":24.5,"Thigh":12.599999999999998,"Calf":5.0000000000000009,"Date":"\/Date(1304195617070)\/","TimeOfDay":"Morning","DietBehavior":"Moderately"}],"JsonRequestBehavior":1}

我现在假设我对这段代码完全错误,因为除了 JSON 字符串之外我没有收到任何返回的内容。我已经用很多不同的方式修改了代码,并且我已经为此工作了两个多星期,试图让它发挥作用,所以如果有人可以向我解释我做错了什么,而不是将我发送到knockoutjs网站示例,这些示例还没有很有帮助。预先感谢您的帮助,使我免于长出更多白发:/

PS。也添加到这个..我想使用一个 friend 创建的mvc扩展,我正在工作,但我必须做一些类似data.WeightStats之类的事情..很沮丧:/检查一下

public static MvcHtmlString KnockoutForModel<TModel>(this AjaxHelper<TModel> helper, bool includeScriptTags = true, bool? applyKoBindings = null)
{
var serializer = new JavaScriptSerializer();

var json = "var viewModel = ko.mapping.fromJS(" + serializer.Serialize(helper.ViewData.Model) + ");\r\n";

if (applyKoBindings.GetValueOrDefault(includeScriptTags))
{
json += "ko.applyBindings(viewModel);\r\n";
}

if (includeScriptTags)
{
json = "<script type=\"text/javascript\">\r\n" + json + "</script>\r\n";
}

return MvcHtmlString.Create(json);
}

最佳答案

$.getJSON 要求您传递回调来处理结果,因为请求是异步完成的。所以,你会想做这样的事情:

var viewModel = {};

$.getJSON('WeightTracker/List', function(result) {
viewModel.stats = ko.mapping.fromJS(result.Data);
ko.applyBindings(viewModel);
});

然后,根据上面的内容,您的模板绑定(bind)将如下所示:

<tbody data-bind='template: {name: "statRowTemplate", foreach: stats }'></tbody>

因此,当您执行 $.getJSON 时,在回调中您将处理 JavaScript 对象而不是 JSON 字符串。

如果您有其他问题,我们很乐意为您提供帮助。

关于jquery - 使用 KnockoutJS 映射插件和 MVC 3 创建基本网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5837737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com