Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp.net MVC DropDownList用于模型中的列表列表_C#_Asp.net_Asp.net Mvc_Asp.net Core_Razor - Fatal编程技术网

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" })