当前位置: 首页 > 编程语言 > C#

在ASP.NETMVC3中正确使用TempData?Share

时间:2023-04-11 11:03:02 C#

在ASP.NETMVC3中正确使用TempData?我有一个ASP.NETMVC3应用程序,其中我的操作生成一个id列表,我想将其提供给后续的AJAX请求。这样我就可以在后台运行一个很长的进程并对其进行轮询。ids列表是这个长时间运行的过程的必要输入。我不想将它们作为URL中的参数传递,因为列表可能很长并且会导致IE出现问题。我的控制器publicActionResultRun(){Listobjs=_db.MyObjs.ToList();字符串uniqueId=Guid.NewGuid().ToString();ViewData["UniqueID"]=uniqueId;TempData["ObjIdList"+uniqueId]=String.Join(",",objs.Select(o=>o.ObjID).ToArray());返回视图(对象);}publicvoidStartProcess(stringuid){stringids=TempData["ObjIdList"+id].ToString().Split(',');...}我的观点varuniqueId='@ViewData["UniqueID"]';$(document).ready(function(event){$('#startProcess').click(function(){$.post("/Scheduler/StartProcess",{uid:uniqueId},function(){getStatus();});event.preventDefault;});});functiongetStatus(){varr=newDate().getTime();//IE缓存杀手varurl='/Scheduler/GetCurrentProgress/'+uniqueId+"?r="+r;$.get(url,function(data){if(data!="100"){$('#status').html(data);setTimeout(function(){getStatus();},100);}else{$('#status').html("完成");};});这是我的初始测试,尽管我的笔记本电脑上有一个并发用户。这样安全吗,还是有更好的方法来传递这些数据?BrandonTempData与ViewData类似,不同之处在于它持续存在两个连续的请求,这使得它在两个不同的控制器操作之间传递数据很有用JasonC.MVC中的TempData实际上一直存在直到被检索。仅供参考,Tempdata更像是SessionData而不是ViewData,因为它实际上存储在用户的SessionState中取自我的问题回复-MVC3控制器操作导致“记住”传入的ID本质上,TempData就像一个会话属性-(存储在SessionState中),用于对控制器的两个连续请求之间的通信。对于您的情况,这似乎是一个好习惯或坏习惯我认为将数据传递给tempdata非常好,但它们是隐藏字段的其他选项。另一个很好的链接是ASP.NETMVC-TempData-好的或坏的做法TempData的生命周期很短。从当前请求到后续请求。TempData使用Session在后台存储数据。但生命周期比常规会话变量短,具体取决于后续请求。如果您确定要在上一次调用设置TempData后立即进行ajax调用,则可以使用此方法。如果你想要更多的控制,你可以把它保存在一个Session变量中,当你想使用它n次后销毁这个session变量。只有当你想在ASP.NETMVC中的控制器之间传递值时才使用TempData。以上就是C#学习教程:在ASP.NETMVC3中正确使用TempData?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢