- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 MVC4 中:
我的模型中有以下用于下拉列表的属性:
public SelectList Subjects { get; set; }
我在页面加载时在我的 Index() 操作中设置 Subjects 属性并返回模型。
使用 SelectListItems 可以很好地填充下拉列表。
@Html.DropDownListFor(x => x.Subject, new SelectList(Model.Subjects, "Text", "Text", "Other"))
当我提交表单时,模型中的 Subjects SelectList 已更改为 null。必须有一种简单的方法来将其保存在 HttpPost 上。我假设我也想提交和发布此 SelectList 以及所有表单字段?我该怎么做?
最佳答案
在 Post
操作之后重新填充 SelectList
已被普遍接受。只需将它提取到一个方法中,然后在 Get
和 Post
操作中调用它。
将它再次发回给 Controller 不是可行的方法。您可以将项目缓存在 SelectList 中,这样您就不必对数据存储进行两次查询。
例子:
public ActionResult Create()
{
var model = new SubjectModel();
PopulateSubjectList(model);
return View(model);
}
[HttpPost]
public ActionResult Create(SubjectModel model)
{
if (ModelState.IsValid)
{
// Save item..
}
// Something went wrong.
PopulateSubjectList(model);
return View(model);
}
private void PopulateSubjectList(SubjectModel model)
{
if (MemoryCache.Default.Contains("SubjectList"))
{
// The SubjectList already exists in the cache,
model.Subjects = (List<Subject>)MemoryCache.Default.Get("SubjectList");
}
else
{
// The select list does not yet exists in the cache, fetch items from the data store.
List<Subject> selectList = _db.Subjects.ToList();
// Cache the list in memory for 15 minutes.
MemoryCache.Default.Add("SubjectList", selectList, DateTime.Now.AddMinutes(15));
model.Subjects = selectList;
}
}
注意:MemoryCache
使用 System.Runtime.Caching
命名空间。请参阅:System.Runtime.Caching namespace .
此外,缓存应该位于 Controller (或业务层)和数据访问层之间的单独层中,这只是为了清楚起见。
关于c# - 在发布模型中保留 SelectList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18703958/
我正在使用 WatiN 进行一些网络测试,但遇到了选择列表的问题。 我必须先浏览几页,添加一个“类别”元素,该元素将填充所述麻烦的选择列表。 我已经能够使用 ByValue 从列表中轻松选择一个元素,
我是 javascript 的新手,目前正在研究 knockoutjs 库。这是我的问题。我有一个从可观察数组填充的选择列表。当我从选择列表中选择一个值并单击保存按钮时,我希望将该值保存在一个变量中,
我有这个选择列表: Please select a parent category New Store Extensions Remodel Bespoke Signage
我正在尝试在选择列表中设置多个值: SelectList List = new SelectList(MyListItems, "valField", "dataField", ); 我使用什么对象/
我的 View 中有一堆下拉列表,例如这个: @Html.DropDownListFor(model => model.Process, Model.ProcessList) 他们都接受一个Selec
我试图在 dropdownlist 文本中显示多个值。示例如下。 SelectList(Parts, "pno", "pcode"+"pname") 在哪里 pno 是零件编号。 pcode 是部分代
我目前在获取 SelectList 时遇到了一些问题默认为定义的初始值。我创建了一个片段来演示这个问题:https://dotnetfiddle.net/ozroT1 本质上,我希望我的 DropDo
在 MVC4 中: 我的模型中有以下用于下拉列表的属性: public SelectList Subjects { get; set; } 我在页面加载时在我的 Index() 操作中设置 Subje
这可能真的很简单...我正在尝试创建一个 SelectList,其中包含从当前年份开始到 2008 年的年份。情况总是如此。例如,在 2020 年,我的 SelectList 将包含 2020 - 2
我有以下操作方法: public JsonResult LoadSitesByCustomerName(string customername) { var customerlist = re
假设我有一个这样的枚举(仅作为示例): public enum Direction{ Horizontal = 0, Vertical = 1, Diagonal = 2 }
所以我在这个方法中生成了一个 SelectList : public static SelectList HolidayDays() { SelectList retval = Generat
我有一个 IDictionary,现在我想在选择列表中使用这些值。我该怎么做呢? 谢谢。 最佳答案 刚设置"Value"和 "Key"为 dataValueField和 dataTextField .
请帮忙使用 Ajax 填充 SelectList 和选项组吗? 我已正确编码添加项目,但不确定如何添加选项组。 这是我的有效 Ajax 代码: var category = $(this).val()
我在通过 QueryOver 选择时遇到一些问题,这是我的模型类: public class BaseModel { public virtual int Id { get; set; }
所以下面的代码为我提供了一个下拉框,其中包含来自司机的姓名列表,但它只是名字,我也有姓氏,我该怎么做。我的代码是... @Html.DropDownListFor(model => model.Dri
我刚刚开始在 MVC 项目中学习 AutoMapper。我有一个基本实体“Attendee”,其中包含一个性别字符串字段(可能值为“M”或“F”)。 我已经在 Attendee 和 AttendeeE
我正在努力创建一个包含下拉列表的 View 。为了生成选择列表项,我编写了一个方法来返回 SelectListItem 的列表。此下拉列表所需 - 其中一个具有 Selected 属性设置为 true
我有一个具有以下属性的类。它从现有列表构造一个 SelectList 对象,然后设置所选项目。 public SelectList ProviderTypeList { get {
我正在尝试为我的 Controller 中的下拉菜单设置选定值,并通过 ViewBag 将其传递到我的 View 。当我调试时,所有正确的值都被传递给 Controller 和 View ,但当它
我是一名优秀的程序员,十分优秀!