0

我有一个屏幕(视图),我用它来列出表中实体的所有实例。如果我双击一行,我会进入一个可以编辑该实体的屏幕。

列表屏幕上有一个按钮,如果单击该按钮,则会将我带到用于编辑的同一视图,但这次是空字段,用于创建实体的新实例。

有时(!),如果我编辑并保存了一个实体,返回到列表并单击“新建”按钮,当我被带到创建新实体的屏幕时,它的值是从我刚刚加入的实体填充的编辑。servicestack中是否有任何可能导致这种数据“泄漏”的东西?

非常感谢。

编辑:应该说这是一个使用 c# 的 servicestack.razor(新的 api)实现,根本不使用 mvc。

4

1 回答 1

0

抱歉,我认为我指出的项目完美地突出了这个问题。我不确定你还需要什么。冒着重蹈覆辙的风险,

  1. 在 d/base 中有几行数据,在列表页面中加载数据。这显示了一个数据表。

  2. 双击一行以产生一个具有表格的屏幕。表单由行中的数据填充。

  3. 返回列表页面。

  4. 现在点击“新建”按钮。这会产生与您在步骤 2 中单击的行相同的视图。

  5. 看到视图中的表单填充了先前渲染中的旧数据,而实际上它应该是空的,因为您想使用表单来创建新实体。

似乎正在发生的事情是第一次呈现视图(表单)(它们没有预编译吗?)它被放入缓存中。问题是表单元素(文本框等)中的任何数据似乎也被放入缓存中。因此,当您随后使用视图尝试创建新实体并希望所有字段为空时,它实际上已预先填充了旧数据。

不知道我怎么能更清楚这一点?或者单元测试有什么帮助?正如我所说,我放在网站上的项目清楚地显示了这种行为。我愿意花更多的时间在上面,但我不能等待在这里发帖和得到回复之间的长时间延迟。再说一次,我知道你和我们其他人一样很忙。如果您能回答我提出的关于 execute 方法如何填充缓存的问题,这可能会有所帮助?或者是吗?源代码不太清楚,因为它的内联文档很少,所以我花了相当多的时间逐步调试调试器等......而且我仍然不清楚一些事情。

无论如何,如果我遇到抱怨,我很抱歉,不是故意的。我敢肯定,该框架具有巨大的潜力。

于 2013-01-29T16:44:40.723 回答