我想我可能在 WebMatrix 的 PageData 中发现了一个错误,但我不确定。它涉及如何将数据从部分页面传递回调用页面。
在 WebMatrix 文档(教程,例如“ 3 - 创建一致的外观”和示例代码)中,建议使用 PageData 作为在页面之间传递数据的机制(例如,从内容页面到布局页面,或到部分页面) .
但是我发现这并不总是以另一种方式工作,将数据从部分页面传递回调用页面。在部分页面中修改或添加 PageData 中的条目,似乎不会返回到调用页面。
把这个剪掉一个最简单的例子,在一个测试页面中,我们可能有这个:
@{
PageData["test"] = "Initial entry";
}
<p>Before calling the partial page, the test value is @PageData["test"]</p>
@RenderPage("_TestPartial.cshtml")
<p>After returning to the calling page, the test value is @PageData["test"]</p>
在 _TestPartial.cshtml 页面中,我们可能有这个:
@{
PageData["test"] = "Modified entry";
}
<p>In the partial page, the test value has been modified to @PageData["test"]</p>
结果输出是这样的:
调用部分页面前,测试值为 Initial entry
在部分页面中,测试值已修改为Modified entry
返回调用页面后,测试值为 Initial entry
因此,当您返回调用页面时,对 PageData 的部分页面所做的修改会丢失。如果我们在部分页面中向 PageData 添加新条目,也会发生同样的情况。他们只是在返回调用页面时丢失了。
我不知道这种行为是否是错误,或者是否是故意的,但它使您无法将数据从部分页面传递回其调用页面。还有另一种(相对干净的)方法可以做到这一点吗?或者,如果它是一个错误,是否有解决方法?