C# Asp.net MVC DropDownList用于模型中的列表列表
我试图在模型的下拉列表中显示名称,看起来像C# Asp.net MVC DropDownList用于模型中的列表列表,c#,asp.net,asp.net-mvc,asp.net-core,razor,C#,Asp.net,Asp.net Mvc,Asp.net Core,Razor,我试图在模型的下拉列表中显示名称,看起来像Model.list 谢谢。你的课必须简单明了 public class LoginModel { public string SelectedApplicationNameItemId { get; set; } public List<ApplicationNameItem> ApplicationNames { get; set; } } public class ApplicationNameItem { p
Model.list
谢谢。你的课必须简单明了
public class LoginModel
{
public string SelectedApplicationNameItemId { get; set; }
public List<ApplicationNameItem> ApplicationNames { get; set; }
}
public class ApplicationNameItem
{
public string Id { get; set; }
public string Name { get; set; }
}
在dropdownlist而不是应用程序中,我得到的是GenericList.Object
我必须修改什么才能在dropdownlist中获得应用程序名称
公共列表应用程序{get;set;}/[“app1”、“app2”]
您可以尝试使用指定的分隔符连接字符串项,如下所示
@Html.DropDownListFor(m => m.ApplicationName, new SelectList(Model.ApplicationName.Select(a=>new { Id = a.Id, Applications = String.Join(", ", a.Applications.ToArray())}), "Id", "Applications"), "Select Application", new { @class = "textboxStyle", placeholder = "Select your application...", autofocus = "autofocus", autocomplete = "on", onkeypress = "btnFocusActivate(this, event)", id = "un" })
var Applications_list = "";
foreach (var item in model.ApplicationName)
{
Applications_list += String.Join(",", item.Applications.ToArray()) + ",";
}
ViewBag.AppList = Applications_list.TrimEnd(',').Split(",").Select((a, index) => new { Id = index, AppName = a });
测试结果
更新:
可以在运行时编辑/附加id为的随机数,结果就像每个应用程序一样作为单独的选项
为了达到上述要求,正如我在评论中提到的,您可以尝试根据控制器操作中的模型数据生成预期数据,然后将其传递给视图以填充下拉列表,如下所示
@Html.DropDownListFor(m => m.ApplicationName, new SelectList(Model.ApplicationName.Select(a=>new { Id = a.Id, Applications = String.Join(", ", a.Applications.ToArray())}), "Id", "Applications"), "Select Application", new { @class = "textboxStyle", placeholder = "Select your application...", autofocus = "autofocus", autocomplete = "on", onkeypress = "btnFocusActivate(this, event)", id = "un" })
var Applications_list = "";
foreach (var item in model.ApplicationName)
{
Applications_list += String.Join(",", item.Applications.ToArray()) + ",";
}
ViewBag.AppList = Applications_list.TrimEnd(',').Split(",").Select((a, index) => new { Id = index, AppName = a });
Html代码
测试结果
您不能使用诸如公共字符串Id{get;set;}公共列表应用程序{get;set;}/[“app1”,“app2”]
SelectList接受对值Id:1,文本:'my name'
首先您必须修复对,您正试图为一个Id
推送多个应用程序
是的,我有多个应用程序名称属于一个Id,我想在dropdowlist中显示。如果是这样,如何为一个Id
实现多个应用程序
,这意味着如果用户选择一个id
,它将选择属于id:1
的所有应用程序名称。如果我所说的是正确的,您可以为应用程序名称创建一个逗号分隔的字符串,然后将其显示为一条记录id:1,text:'app1,app2,app3'
可以在运行时编辑/附加id为的随机数,结果就像每个应用程序作为单独的选项一样。您的模型LoginModel的ApplicationName
是否只有一项?否。但是正在寻找映射,以使id在运行时唯一,并在下拉列表中显示选项。我建议您可以根据控制器动作中的模型数据重新生成预期的列表
,并通过viewbag等将其传递给视图,而不是在视图中写入和执行太多逻辑代码。可以在运行时编辑/附加id为的随机数,结果就像每个应用程序作为单独的选项一样。
Hi@r08,您可以按照我在更新中共享的方法来实现需求。
var Applications_list = "";
foreach (var item in model.ApplicationName)
{
Applications_list += String.Join(",", item.Applications.ToArray()) + ",";
}
ViewBag.AppList = Applications_list.TrimEnd(',').Split(",").Select((a, index) => new { Id = index, AppName = a });
@Html.DropDownListFor(m => m.ApplicationName, new SelectList(ViewBag.AppList, "Id", "AppName"), "Select Application", new { @class = "textboxStyle", placeholder = "Select your application...", autofocus = "autofocus", autocomplete = "on", onkeypress = "btnFocusActivate(this, event)", id = "un" })