我是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.
}
我的猜测是,您要么有绑定问题,要么没有查询或创建需要保存的实体。