asp.net - Html.DropDownListFor 设置选中值

标签 asp.net asp.net-mvc

我创建了一个@Html.DropDownListFor 并从数据库中填充它。如何将选定值设置为下拉列表?

我的看法:

@Html.DropDownListFor(m => m.Forms, new SelectList(Model.Forms, "FormsCreatorID", "FormName"),
            "Select a Form", new { @class = "form-control" })

我的 Controller :

var forms = db.formscreators.Where(fp => fp.PropertyID == id || fp.PropertyID == 0)
            .OrderByDescending(x => x.PropertyID).GroupBy(x => x.FormName).Select(x => x.FirstOrDefault()).ToList();
var viewModel = new ListFormsCreator { Forms = forms };

我的 View 模型:

public class ListFormsCreator
{
    public List<formscreator> Forms { get; set; }
}

我的数据库模型:

public partial class formscreator
{
    public int FormsCreatorID { get; set; }
    public string FormName { get; set; }
    public int PropertyID { get; set; }
}

谢谢

最佳答案

您应该向您的 View 模型添加另一个属性以存储/传递所选选项。

public class ListFormsCreator
{
    public int SelectedFormId  { set;get;}
    public List<formscreator> Forms { get; set; }
}

现在在您的 GET 操作中,您可以设置该值

var viewModel = new ListFormsCreator() { Forms = forms };
viewModel.SelectedFormId  = 2 ; // This will select the option with 2 as FormsCreatorID
return View(viewModel);

并在 View 中使用具有该属性的 lambda 表达式作为 DropDownListFor 辅助方法的第一个参数。

@model ListFormsCreator

@Html.DropDownListFor(m => m.SelectedFormId  , 
                         new SelectList(Model.Forms, "FormsCreatorID", "FormName"),
                        "Select a Form", new { @class = "form-control" })

DropDownListFor 辅助方法将使用 SelectedFormId 属性的值,并从列表中选择具有相同 value 属性值的选项该 SELECT 元素的选项。

您还可以从 View 模型中删除对 formscreator 类的依赖,方法是将其替换为 SelectListItem

的列表
public class ListFormsCreator
{
    public int SelectedFormId  { set;get;}
    public List<SelectListItem> Forms { get; set; }
}

现在在您的 GET 操作中,您可以使用 Select 方法从您的其他集合中生成 SelectListItem 的 lsit。

var viewModel = new ListFormsCreator();
viewModel.Forms = someCollection.Select(a=>new SelectListItem { 
                                           Value=a.FormsCreatorId.ToString(), 
                                           Text=a.FormName})
                 .ToList();
viewModel.SelectedFormId  = 2 ; // This will select the option with 2 as FormsCreatorID
return View(viewModel);

假设 someCollectionformscreator 对象的集合 现在在 View 中代码简单多了

@Html.DropDownListFor(m => m.SelectedFormId, Model.Forms ,"Select a Form")

关于asp.net - Html.DropDownListFor 设置选中值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47702462/

相关文章:

asp.net - 您能推荐一个 .net 模板引擎吗?

asp.net-mvc - Entity Framework 6 - 如何将属性标记为非外键

.net - 将 jEditable 与 ASP.NET MVC 结合使用(POST)

javascript - 从 OnClientClick 调用函数时在 JavaScript 中返回 true

asp.net - 如何使用asp.net core重写URL

jquery - 切换开关在 PartialView 中不起作用

javascript - 运算符 '!' 无法应用于类型为 '<null> 的操作数

c# - 复选框值始终为空,即使我选中它

asp.net - TCP/IP 客户端 loopNET

asp.net - ASP.NET中添加动态控件,1.1和2.0有区别吗?