Я думаю, что, возможно, нашел ошибку в PageData WebMatrix, но я не уверен.
Это касается того, как передать данные с частичной страницы обратно на страницу вызова.
В документации 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>
В результате получается следующее:
Перед вызовом частичной страницы тестовое значение - Начальная запись
На неполной странице значение теста было изменено на Измененную запись
После возврата на страницу вызова, тестовое значение - Начальная запись
Таким образом, модификация частичной страницы, внесенной в PageData, теряется при возврате на страницу вызова. То же самое происходит, если мы добавляем новые записи в PageData на частичной странице. Они просто теряются при возвращении на страницу вызова.
Я не знаю, является ли это поведение ошибочным или намеренным, но оно оставляет вас без чистого способа передать данные с неполной страницы обратно на ее вызывающую страницу. Есть ли другой (относительно чистый) способ сделать это? Или, если это ошибка, есть ли обходной путь?