【发布时间】:2021-11-11 23:53:25
【问题描述】:
在我的应用程序中,将一些数据加载到视图(组合框)中,我一直在使用TempData。我想知道是否可以为此目的使用TempData?
我当前的代码在这里;首先我将数据调用到控制器中的列表中:
List<Request_Types> RequestTyleList = db.Request_Types.Where(r => r.Status == true).ToList();
List<SelectListItem> ReqTypeDropDown = RequestTyleList.Select(r => new SelectListItem { Text = r.Request_Type, Value = r.Id.ToString() }).ToList();
然后我将此数据分配给TempData:
TempData["RequestTyleList"] = ReqTypeDropDown;
在视图中,我调用了该临时数据并分配给组合框
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
List<SelectListItem> ReqType = (List<SelectListItem>)TempData.Peek("RequestTyleList");
}
-----------------
<div class="form-group row">
@Html.LabelFor(model => model.ReqType, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-sm-8">
@Html.DropDownListFor(model => model.ReqType, ReqTypes, "Select Request Type", new { @class = "js-dropdown" })
@Html.ValidationMessageFor(model => model.ReqType, "", new { @class = "text-danger" })
</div>
</div>
如果我想在编辑中访问这些相同的数据,我会再次创建一个列表并将数据放入列表并传输到TempData,然后再次从视图中调用相同的数据。还是我列表里有5到8条数据,我想知道TempData什么时候有100条数据,我的系统会变慢吗?是否存在任何潜在的性能问题?
在网上冲浪时,我在Sessions 中得到了同样的结果,但我不知道它是否适合这个?否则有什么好的方法可以在不降低系统性能的情况下做到这一点,比如在一个控制器中调用和存储数据,我可以从任何视图访问这些数据。
【问题讨论】:
-
如果您在后续请求中不需要相同的数据,您可以使用
ViewData而不是TempData以获得更好的性能。 -
您也可以为此创建一个
Model类并使用强类型帮助器。 -
@jishansiddique 你能给我举个例子吗?
标签: asp.net asp.net-mvc asp.net-mvc-4