gpt4 book ai didi

c# - 在 ASP.NET MVC3 中正确使用 TempData?

转载 作者:太空狗 更新时间:2023-10-29 20:01:33 30 4
gpt4 key购买 nike

我有一个 ASP.NET MVC3 应用程序,我的操作在其中生成了一个 ID 列表,我想将其提供给后续的 AJAX 请求。这样我就可以在后台运行一个长进程并对其进行轮询。 ID 列表是这个长时间运行的过程的必要输入。我不想将它们作为参数传递到 URL 中,因为列表可能会很长并导致 IE 出现问题。

我的 Controller

public ActionResult Run()
{
List<MyObjs> objs = _db.MyObjs.ToList<MyObjs>();

string uniqueId = Guid.NewGuid().ToString();
ViewData["UniqueID"] = uniqueId;
TempData["ObjIdList" + uniqueId] = String.Join(",", objs .Select(o => o.ObjID).ToArray<int>());

return View(objs);
}

public void StartProcess(string uid)
{
string ids = TempData["ObjIdList" + id].ToString().Split(',');
...
}

我的看法

var uniqueId = '@ViewData["UniqueID"]';

$(document).ready(function (event) {
$('#startProcess').click(function () {
$.post("/Scheduler/StartProcess", { uid: uniqueId }, function () {
getStatus();
});
event.preventDefault;
});
});

function getStatus() {
var r = new Date().getTime(); // cache killer for IE
var url = '/Scheduler/GetCurrentProgress/' + uniqueId + "?r=" + r;
$.get(url, function (data) {
if (data != "100") {
$('#status').html(data);
setTimeout(function () { getStatus(); }, 100);
} else {
$('#status').html("Done");
};
});
}

这在我的初始测试中有效,尽管是在我的笔记本电脑上与一个并发用户一起使用。这样安全吗,还是有更好的方法来传递这些数据?

最佳答案

布兰登

TempData is like ViewData, except that it persists for two successive requests making it useful for things like passing data between two different controller actions

杰森 C

TempData in MVC actually persists until retrieved. As an FYI Tempdata is actually stored in a users SessionState so it is more like SessionData than ViewData

摘 self 的一个问题回复 - MVC3 Controller Action Result 'Remember' Passed-in Id

本质上,TempData 就像一个 session 属性 -(存储在 SessionState 中)用于在对 Controller 的两个连续请求之间进行通信。就好像这在您的情况下是好事还是坏事一样,我认为将数据传递给 tempdata 是非常好的,但它们是其他选项,其中隐藏字段。另一个值得一看的链接是 ASP.NET MVC - TempData - Good or bad practice

关于c# - 在 ASP.NET MVC3 中正确使用 TempData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737022/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com