RouteData потерян на Post в контроллере, вызванном RenderAction
У меня есть представление "Возобновить", которое вызывает RenderAction, чтобы я мог добавить комментарии к резюме. Код:
@{Html.RenderAction("Add", "ResumeComment", new { resumeId = @Model.Id });}
Поэтому приведенный выше код вызывает действие Add в моем контроллере ResumeComment и передает его resumeId. Если я взгляну на свой ControllerContext.ParentActionViewContext.RouteData внутри метода Add (GET), я увижу 4 значения:
PL <- which is resume category
954 <- resume id
Resume <- Controller
Edit <- Action, because I am adding comments on the Edit page in the resume.
The problem that I have is that I am loosing resume category (PL) and resume id(954) when I post (add a comment). Here is my ResumeComment form:
@using (Html.BeginForm("Add", "ResumeComment"))
{
...
<input type="submit" value="Add Comment" />
..}
So this form will call Add (Post) method in the ResumeComment controller when sumitted. Here is my add method:
[HttpPost, ActionName("Add")]
public ActionResult Add(ResumeComment resumeComment)
{
.....
}
I am not able to access ControllerContext.ParentActionViewContext.RouteData at all, it is null. I am however able to access ControllerContext.RouteData but when I look at the values I only see "ResumeComment" and "Add" in there and that is it. How can I preserve the resume category and resume id?
2 ответа
Если вы хотите опубликовать некоторые значения в вашей форме на ResumeComment.Add
Вы должны поместить их в скрытые входы. RouteData
волшебным образом не сохраняется между запросами.
Вы можете использовать TempData- это похоже на сеанс, но как только вы прочитаете данные из него, он будет удален. Это хорошее решение для хранения временных данных между двумя последовательными запросами.