相关疑难解决方法(0)

ViewBag,ViewData和TempData

任何机构都可以解释,何时使用

  1. TempData的
  2. ViewBag
  3. ViewData的

我有一个要求,我需要在控制器中设置一个值,控制器将重定向到控制器二,控制器二将呈现视图.

我试图使用ViewBag,当我到达Controller Two时,值会丢失.

我可以知道何时使用和优缺点?

谢谢

asp.net-mvc-3

207
推荐指数
3
解决办法
14万
查看次数

何时在ASP.Net MVC中使用TempData vs Session

我试图搞清楚MVC框架,所以请耐心等待.

现在,我唯一使用会话存储的是存储当前登录的用户.我的网站很简单.对于此示例,请考虑三个域对象:Person,Meeting和File.用户可以登录并查看会议的"仅限会员"个人资料,并可以向其添加文件,或查看会议的公共"个人资料"(如果他们未登录).

因此,从会议的私人资料中,登录用户,我有一个"添加文件"链接.此链接路由到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 …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc session tempdata

60
推荐指数
3
解决办法
7万
查看次数

标签 统计

asp.net-mvc ×1

asp.net-mvc-3 ×1

session ×1

tempdata ×1