从一开始就好。我有一个MVC EF应用程序(一个网站)。人们可以在该网站上下订单。当所有订单都在当天完成时,一个人(购物者)打开前端应用程序(通过反应制作),并通过API调用所有订购的产品。到现在为止还挺好。我在名为&#34的前端应用程序中创建了一个按钮;不可用"。当购物者点击它时,它激活MVC应用程序中的方法,向发出订单的用户发送邮件以将产品更改为另一个。到现在为止还挺好。 用户单击邮件中的链接,转到网站并将特定产品更改为新产品。 现在这个新产品必须在前端应用程序中更新,所以我想要做的是点击按钮,长时间轮询到api url并等待服务器(网站)响应新产品。
我有html表单(用户更改产品的表单),当用户点击提交时,会在数据库中修改一些记录。
这是de code(在OrderController
中找到):
[HttpPost]
public ActionResult ChangeOrder(int orderId, int productId)
{
//get huidige order
var order = _db.Orders.Where(o => o.OrderId == orderId).SingleOrDefault();
//get prijs van het nieuwe product
var productPrice = _db.Products.Where(p => p.ProductId == productId).SingleOrDefault();
//pas prijs aan in de order
order.UnitPrice = productPrice.Details.PriceLabelNow;
//pas product id aan in de order
order.ProductId = productId;
order.Date = DateTime.Now;
//update de database
_db.setOrderModified(order);
_db.SaveChanges();
return View("OrderChanged");
}
这就是setOrderModified的样子(在我的Context类中找到):
public void setOrderModified (object entity)
{
Entry(entity).State = EntityState.Modified;
}
现在我想使用观察者模式监视ChangeOrder
,以便在提交表单时将其发送给另一个方法。
我在考虑将setORderMoified
作为主题,但我不知道该怎么做。
由于评论建议使用eventhandler,我添加了在提交表单时必须引发的代码。
这是前端用于获取新产品的api调用。
// GET /api/orders/one/{device_id}/{id}/{date}
[HttpGet]
[ActionName("one")]
public OrdersAPI GetOrder(string device_id, int id, string date)
{
//fire this when the form is submitted.
var result = repository.GetUpdated(device_id, id, date);
return result;
}
任何可以帮助我或者有更好主意的人?