首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >微风SaveChanges

微风SaveChanges
EN

Stack Overflow用户
提问于 2013-09-11 01:22:47
回答 1查看 584关注 0票数 0

我是BreezeJS新手,最近创建了一个正在启动和运行的项目。我可以使用Breeze查询来自我的SQL服务器的数据,没有问题。但是,每当我试图保存更改时,更改都不会保存。在VS 2012中,我已经验证了JavaScript保存函数实际上是被调用的,但是服务器端的HttpPost方法从未被调用。

这是我设置的微风控制器:

代码语言:javascript
复制
    using System.Linq;
using System.Web.Http;
using Newtonsoft.Json.Linq;
using Breeze.WebApi;
using FitnessTracker.Models;

namespace FitnessTracker.Controllers
{
    [BreezeController]
    public class BreezeController : ApiController
    {
        private readonly EFContextProvider<FitnessTrackerContext> _fitnessContext =
            new EFContextProvider<FitnessTrackerContext>();
        //
        // GET: /Breeze/

        [HttpGet]
        public string Metadata()
        {
            return _fitnessContext.Metadata();
        }

        [HttpPost]
        public SaveResult SaveChanges(JObject saveBundle)
        {
            return _fitnessContext.SaveChanges(saveBundle);
        }

        [HttpGet]
        public IQueryable<FitnessEquipment> FitnessEquipments()
        {
            return _fitnessContext.Context.FitnessEquipments;
        }

    }
}

下面是我使用的保存函数:

代码语言:javascript
复制
function saveChanges() {
        return manager.saveChanges()
            .fail(saveFailed);
}

下面是HTML:

代码语言:javascript
复制
<div class="box-body form" data-bind="foreach: exercises">
    <input type="text" class="txt-m g2" data-bind="text: EquipmentName" />
    <input type="text" class="txt-m g1" data-bind="text: EquipmentLevel" />
    <input type="text" class="txt-m g2" data-bind="text: DurationSeconds" />
    <input type="text" class="txt-m g2" data-bind="text: Weight" />
    <input type="text" class="txt-m g4" data-bind="text: DateTime" />
    <br class="clear" />
</div>

保存更改

提前感谢您的帮助!!

编辑9/12/2013:我已经修复它感谢杰的帮助!!

问题是,我绑定的是文本,而不是值。我将html更改为:

代码语言:javascript
复制
<div class="box-body form" data-bind="foreach: exercises">
    <input type="text" class="txt-m g2" data-bind="value: EquipmentName" />
    <input type="text" class="txt-m g1" data-bind="value: EquipmentLevel" />
    <input type="text" class="txt-m g2" data-bind="value: DurationSeconds" />
    <input type="text" class="txt-m g2" data-bind="value: Weight" />
    <input type="text" class="txt-m g4" data-bind="value: DateTime" />        
    <br class="clear" />
</div>

它现在是没有问题的储蓄。谢谢杰的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-12 00:47:35

您是否确认您实际上正在更改/或在客户机上的EntityManager中添加一个实体?您可以调用EntityManager的hasChanges方法来确认。如果没有要保存的更改,微风不会尝试调用服务器。

所以试一试

代码语言:javascript
复制
if (manager.hasChanges()) {
   manager.saveChanges()
           .fail(saveFailed);
} else {
   // my guess is that you will get here.
}

我的猜测是,您要么有绑定问题,要么没有查询或创建需要保存的实体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18731269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档