微风保存变化



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

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

    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;
        }
    }
}

这是我正在使用的保存功能:

function saveChanges() {
        return manager.saveChanges()
            .fail(saveFailed);
}

这是 HTML:

<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 更改为:

<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>

它现在可以毫无问题地保存。 感谢周杰伦的帮助!

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

所以尝试类似的东西

if (manager.hasChanges()) {
   manager.saveChanges()
           .fail(saveFailed);
} else {
   // my guess is that you will get here.
}

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

相关内容

  • 没有找到相关文章

最新更新