Advertisement
Guest User

Untitled

a guest
Apr 25th, 2015
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. public class ShoppingListModel
  2. {
  3. public string Name { get; set; }
  4. public List<ItemModel> Items{ get; set; }
  5.  
  6. public ShoppingListModel()
  7. {
  8. Items=new List<ItemModel>();
  9. }
  10. }
  11.  
  12. ShoppingListModel = function(data) {
  13. var vm = ko.mapping.fromJSON(data);
  14. return vm;
  15. };
  16.  
  17. @{
  18. var jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() };
  19. var data = new JavaScriptSerializer().Serialize(JsonConvert.SerializeObject(Model, jsonSerializerSettings));
  20. }
  21.  
  22. @section scripts {
  23. <script src="~/App/ShoppingListModel.js"></script>
  24.  
  25. <script>
  26. var vm = ShoppingListModel(@Html.Raw(data));
  27. ko.applyBindings(vm);
  28. </script>
  29. }
  30.  
  31. @Html.HiddenFor(model => model.Name, new { @data_bind="value:name"})
  32. <input type="text" data-bind="value:name"/>
  33.  
  34. @Html.HiddenFor(model => model.Items, new { data_bind = "value: items" })
  35.  
  36. <tbody data-bind="foreach:items">
  37. <tr>
  38. <td>
  39.  
  40. <span data-bind="text:name"></span>
  41. </td>
  42. <td><span data-bind="text:count"></span></td>
  43. <td>
  44. <button class="btn btn-xs" data-bind="click:$parent.remove">
  45. <i class="fa fa-trash"></i>
  46. </button>
  47. </td>
  48. </tr>
  49. </tbody>
  50.  
  51. <input type="hidden" value="xxx" />
  52.  
  53. vm.itemsJson = ko.computed(function() {
  54. return ko.toJSON(vm.items);
  55. },this);
  56.  
  57. <input name="itemsjson" type="hidden" data-bind="value:itemsJson"/>
  58.  
  59. public List<ItemModel> Items{ get; set; }
  60.  
  61. public string ItemsJson { get; set; }
  62.  
  63. var items=JArray.Parse(model.ItemsJson);
  64.  
  65. model.Items = items.
  66. Select(i => new ItemModel {Name = (string) i["name"], Count = (int) i["count"]})
  67. .ToList();
  68. return View(model);
  69.  
  70. function YourViewModel() {
  71. var self = this;
  72. self.items = ko.observableArray(); //fill it with your stuff;
  73. self.valueForHiddenField = ko.computed(function() {
  74. return ko.toJSON(self.items);
  75. }, this); //use this observable as value of your hidden field
  76. }
  77.  
  78. <form>
  79. <!-- ko foreach: items -->
  80. <input type="hidden" data-bind="value: property1, attr: { name: 'Items[' + $index() + '].Property1' }">
  81. <input type="hidden" data-bind="value: property2, attr: { name: 'Items[' + $index() + '].Property2' }">
  82. <!-- /ko -->
  83.  
  84. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement