MVC 5 Temp Data, Parse Data
本文关键字:Data Parse Temp MVC | 更新日期: 2024-09-25 09:23:32
我试图将数据从一个控制器传递到另一个控制器。我有一个宠物,我需要解析到一个消息控制器。基本上,我有一个创建宠物的用户,然后其他用户可以通过WebAPP向其他宠物主人发送消息。在宠物/详细信息上,我有一个按钮调用动作SendMessage(如下所示)
当前我得到一个未处理的异常:InvalidOperationException:尚未为此应用程序或请求配置会话。Microsoft.AspNet.Http.Interal.DefaultHttpContext.get_Session()
宠物控制器.CS:
public IActionResult SendMessage(int id)
{
Pet PetData = _context.Pet.Single(m => m.ID == id);
TempData["PetData"] = PetData;
return RedirectToAction("Create", "Message");
}
然后我需要将宠物对象移动到我的消息Controller:
// POST: Messages/Create
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Message message)
{
if (ModelState.IsValid)
{
_context.Message.Add(message);
Pet Data = TempData["PetData"] as Pet;
message.SentTo = Data.CreatedBy;
message.Subject = Data.Name;
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(message);
}
我希望有人能帮我解决这个问题。我是MVC的新手。
TempData方法只返回单个值,我的错误是我试图将TempData["PetData"]发送到Pet对象中,因此它返回null,因为它只返回一个值,而不返回孔对象。
修复:添加到Project.JSON,恢复了包装
"Microsoft.AspNet.Session": "1.0.0-*"
添加到startup.cs ConfigureServices
services.AddSession();
services.AddCaching();
然后我修改了我用来将用户发送到/Messages/create 的方法
public IActionResult SendMessage(int id)
{
Pet PetData = _context.Pet.Single(m => m.ID == id);
TempData["PetOwner"] = PetData.CreatedBy;
TempData["PetName"] = PetData.Name;
return Redirect("/Messages/Create");
}
在那之后,我意识到我试图将数据发送到Pet Obejct,然后DB返回Null Not Allowed。
然后我改革了创建消息方法
// POST: Messages/Create
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(Message message)
{
if (ModelState.IsValid)
{
_context.Message.Add(message);
string PetOwner = TempData["PetOwner"].ToString();
string PetName = TempData["PetName"].ToString();
message.SentTo = PetOwner;
message.Subject = PetName;
message.DateSent = System.DateTime.Now;
message.SentBy = User.Identity.Name;
message.Read = false;
_context.SaveChanges();
return RedirectToAction("Index");
}
return View(message);
}
感谢Kartikeya Khosla为我指明了正确的方向。