gpt4 book ai didi

c# - 初始化下拉列表 - 使其保持不变

转载 作者:太空宇宙 更新时间:2023-11-03 13:46:43 26 4
gpt4 key购买 nike

在我的 mvc4 应用程序中,我在页面上设置了下拉列表 Register like this

在 AccountModel.cs 的 HttpGet Register 方法中,我用这段代码初始化了它的数据

public ActionResult Register()
{
MyModel mm=new MyModel();
mm.mydropdown=new []
{
new SelectListItem{Value="value", Text="text"}
////...
};
}

只有当此页面加载时,该代码才会运行;但是我可以在任何地方插入必须编译的代码片段并拥有我的 mydropdown总是在应用程序中初始化,这样我就不必在 [HttpPost] 中重写它方法?

[更新]这是 mymodel

public class Register
{
[Required(ErrorMessage="Option is required")]
public string option;

public IEnumerable<SelectListItem> Options;
}

在我的例子中,我使用 option在像这样的 cshtml 中

@Html.DropDownListFor(m=>m.option, Model.Options,"Select an item")

HttpPost注册方法,我必须重新初始化选项,否则我会遇到错误“Option is of type string but it must be IEnumerable<SelectListItem> instead

最佳答案

您可以扩展 IEnumerable<SelectListItem>然后这样做

public class MyDropDownList : IEnumerable<SelectListItem> 
{
public MyDropDownList()
{
SelectedListItem item = new SelectListItem{Value="value", Text="text"};
this.Add(item);
}
}

或者,您可以将其写入 MyModel 的构造函数中

public class Register
{
[Required(ErrorMessage="Option is required")]
public string option;

public IEnumerable<SelectListItem> Options;
public Register()
{
this.Options = new []
{
new SelectListItem{Value="value", Text="text"}
////...
};
}
}
public ActionResult Register()
{
Register mm = new Register();
}

关于c# - 初始化下拉列表 - 使其保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15102413/

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