我想我可能在WebMatrix的PageData中發現了一個錯誤,但我不確定。 它涉及如何將數據從部分頁面傳遞迴調用頁面。這是WebMatrix PageData中的錯誤嗎?
在WebMatrix文檔(教程,例如「3 - Creating a Consistent Look」和示例代碼)中,推薦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>
的產生的輸出是:
在調用部分頁面之前,測試值是初始條目
在部分頁,測試值已經被修改爲修改的項
返回調用頁面之後,將試驗值是初始入口
從而使局部頁面PageData進行的修改當您返回到呼叫頁面時會丟失。如果我們在部分頁面中向PageData添加新條目,也會發生同樣的情況。回到呼叫頁面時,他們只是迷失了方向。
我不知道這個行爲是一個錯誤,還是它是故意的,但它沒有一個乾淨的方式將數據從部分頁面傳回到其調用頁面。是否有另一種(相對乾淨)的方式來做到這一點?或者,如果它是一個錯誤,是否有解決方法?
感謝您的回答,這是有道理的,但這種行爲是遠不明顯的。 在文檔/ MSDN /其他地方我會去找出來嗎? –
關於它如何在MSDN中運行有一些文檔 - http://msdn.microsoft.com/en-us/library/system.web.webpages.webpagebase.page(v=VS.99).aspx但它沒有對這種特別的行爲沒有太多的說法。 – Pranav
解釋爲什麼PageData中的字典能夠正常工作,但PageData [「test」]不能解釋的機會?它是由參考而不是由價值決定的嗎? – johna