传递数据控制器到视图ASP的准确方式.净MVC



在我的应用程序中,加载一些数据到视图(组合框),我一直使用TempData。我想知道是否可以使用TempData用于此目的?

我当前的代码在这里;首先,我将data调用到控制器中的列表:

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>

如果我想在Edit中访问这些相同的数据,我再次创建一个列表并将数据放入列表并传输到TempData,并再次从视图调用相同的数据。我的列表中还有5到8项数据,我想知道当TempData中有100项数据时,我的系统会变慢吗?是否存在任何潜在的性能问题?

在网上冲浪的时候,我得到了同样的会在Sessions做,但我不知道它是否适合这个?或者有没有什么好方法可以在不降低系统性能的情况下做到这一点,比如在一个控制器中,如果我调用并存储数据,我可以从任何视图访问这些数据。

@smc developments, please use below Model and html markup to show dropdown list for users
public class User
{
public int SelectedUserId{get;set;}
public IEnumerable<SelectListItem> Users { get; set; }
}
@Html.DropDownListFor(x => Model.SelectedUserId, new SelectList(Model.Users, "Value", "Text"), htmlAttributes: new { @class = "form-control", id = "User"})

最新更新