2023-02-17 459
我试图让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会话中提供什么样的数据(邮件)的任何示例?
tempdata是会话,因此它们并不完全不同.但是,区分易于理解,因为 tempdata仅用于重定向,并仅重定向.因此,当您在Tempdata中设置一些消息然后重定向时,您将正确使用Tempdata.
但是,使用会话对于任何类型的安全性非常危险.会话和成员资格在ASP.NET中完全分开. 您可以”窃取”其他用户的会话,是的,人们通过这种方式攻击网站.因此,如果要根据用户登录,查看 isauthenticated ,如果要根据登录的类型的用户选择性地显示信息,则使用角色提供程序.因为可以缓存可以缓存,只有选择性地允许在get中访问动作的方式使用.
更新响应您的编辑问题:您已经有一个很好的例子,在您的问题中使用Tempdata,即,在失败的帖子后返回简单的错误消息.就 在会话中存储(超越”不多”)而言,我只是将会话视为特定于用户的缓存.与特定于用户特定的缓存一样,您不应将安全敏感的信息放在那里.但这是一个粘贴抬头相对昂贵的东西的好地方.例如,我们的网站上有用户的全名.存储在数据库中,我们不希望为我们服务的每个页面对其进行数据库查询. (安装我们的应用程序的安装在单个公司中,因此用户的全名不被视为”安全敏感.”)所以如果您认为会话作为缓存,则会通过用户拥有的cookie变化,因此您赢得了”太错了.
默认的tempdata提供程序使用会话,因此实际上并不大大区分,除了在下次请求结束时清除了Qupdata.当数据需要仅在两个请求之间持续到持续时,您应该使用TempData,优选地,第二个是重定向以避免来自用户的其他请求 – 例如 – 意外地删除数据.如果数据需要持续时间超过那么长,则应重新填充Tempdata或直接使用会话.
您可以根据您的要求使用它.澄清可以是
tempdata vs session
tempdata
tempdata将保留方法保留tempdata的值.
示例:
tempdata.keep(),tempdata.keep(“empname”)
tempdata内部存储了会话变量的值.
session:
tempdata和会话,都需要键盘,用于获取数据并检查空值以避免运行时间异常.
以上所述是小编给大家介绍的在ASP.Net MVC中何时使用TempData与Session?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34250.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态