我试图让MVC框架的窍门所以大家多多包涵。
现在,我使用的会话存储的唯一事情是存储登录用户的电流。 我的网站是简单的。 在这个例子中,考虑三个域对象,人,会议和文件。 用户可以登录系统,查看会议的“成员只有”配置文件,可以将文件添加到它,或查看会议的公开的“个人资料”,如果他们还没有登录。
所以,从会议的专用配置文件,以登录的用户,我有一个“添加文件”链接。 此链接路线FileContoller.Add(INT meetingId)。 从这个动作,我得到了用户想要将文件添加到使用会议ID的会议,但形式发布后,我还需要知道用户将文件添加到会议。 这就是我的问题所在,我应该通过,通过TempData的会议“目前正在与互动”,或将其添加到会话存储?
这是我目前拥有的添加操作设置,但它不工作:
public ActionResult Add(int meetingId)
{
try
{
var meeting = _meetingsRepository.GetById(meetingId);
ViewData.Model = meeting;
TempData[TempDataKeys.CurrentMeeting] = meeting; /* add to tempdata here */
}
catch (Exception)
{
TempData[TempDataKeys.ErrorMessage] = "Unable to add files to this meeting.";
return RedirectToRoute("MeetingsIndex");
}
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(FormCollection form)
{
var member = Session[SessionStateKeys.Member] as Member;
var meeting = TempData[TempDataKeys.CurrentMeeting] as Meeting; /* meeting ends up null here */
if (member == null)
{
TempData[TempDataKeys.ErrorMessage] = "You must be logged in to add files to an meeting.";
return RedirectToRoute("LoginPage");
}
if (meeting == null)
{
TempData[TempDataKeys.ErrorMessage] = "An error occurred. No meeting selected.";
return RedirectToRoute("MeetingsIndex");
}
// add files to meeting
TempData[TempDataKeys.Notification] = "Successfully added.";
return RedirectToRoute("AddFiles", new {meetingId = meeting.MeetingId});
}
编辑:
基于大部分的答案,任何一个可以提供什么样的(比其他的消息)的数据应该存储在TempData的VS会话的例子?