Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.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/0/asp.net-mvc/16.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# MVC实体框架DropDownListFor<&燃气轮机;_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# MVC实体框架DropDownListFor<&燃气轮机;

C# MVC实体框架DropDownListFor<&燃气轮机;,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我想遵循最佳MVC最佳实践来创建水滴列表 我有3个模型(为了这个目的我减少了它们) 模型一 学生 模式二 场地 模式三 虚拟机 在我的VM视图中,我使用EditorForHTML帮助程序来填充我的VM和学生模型。站点模型在数据库种子处预先填充 我正在寻找最好的方式,包括在我的虚拟机视图网站下拉列表,这将映射到我的学生模型 如何正确设置模型以实现此目标?ViewModel public class VM { public int ID {get;set} public studen

我想遵循最佳MVC最佳实践来创建水滴列表

我有3个模型(为了这个目的我减少了它们)

模型一 学生

模式二 场地

模式三 虚拟机

在我的VM视图中,我使用EditorForHTML帮助程序来填充我的VM和学生模型。站点模型在数据库种子处预先填充

我正在寻找最好的方式,包括在我的虚拟机视图网站下拉列表,这将映射到我的学生模型

如何正确设置模型以实现此目标?

ViewModel

public class VM
{
    public int ID {get;set}
    public student Students {get;set;}

    public SelectList SiteList {get;set;}
    public int SiteID {get;set;}

    public DateTime Date  { get { return DateTime.Now; } }
    public bool Criteria {get;set;}
}
加载视图操作

public ActionResult LoadVMView(){      
     var model = new VM();

     var items = GetSitesFromDatabase().Select(s => new SelectListItem(){
                        Text = s.SiteName,
                        Value = s.ID.ToString()
                        });
 model.SiteList = new SelectList(items);

      return View(model);
}
视图:

在岗

[HttpPost]
public ActionResult LoadVMView(VM model){

var selecteSiteID = model.SiteID;
}
简而言之,您需要扩展方法并将
列表
放入视图模型中

这是一本书。小提琴有更多的细节。螺母和螺栓如下所示:

ViewModel-添加
列表
在psuedo代码中,上面说

  • 模型中的
    站点
    对象包含要显示的属性
  • 使用模型中的
    Sites
    对象创建一个新的
    SelectList
    。使用
    ID
    属性作为数据值,使用
    SiteName
    属性作为数据文本
  • 根据上述信息创建一个下拉列表
控制器 这只是将种子视图模型传递给视图

public ActionResult Index()
{
    var vm = SeedFromDatabase();
    return View(vm);
}

private MyViewModel SeedFromDatabase()
{
    var vm = new MyViewModel();
    vm.Sites.Add(new Site(0, "one"));
    vm.Sites.Add(new Site(1, "two"));
    vm.Sites.Add(new Site(2, "three"));
    return vm;
}

你能澄清一下你的问题吗?如果该模型将使用所有三个模型,你将使用所有数据创建一个更大的视图。在你的模型三虚拟机上,我强烈建议进行更改。这是一个好方法,尽管它的构建方式与当前不同。在构建之前,它需要做大量的工作。@ShaunLuttin答案只是为了指导DropDownList for如何工作,这是OP在问题中询问的,它没有构建。例如,您不能使用
ToList()
分配给
SelectList
。此外,您不能将
int
隐式转换为
string
。属性中缺少分号。
public ActionResult LoadVMView(){      
     var model = new VM();

     var items = GetSitesFromDatabase().Select(s => new SelectListItem(){
                        Text = s.SiteName,
                        Value = s.ID.ToString()
                        });
 model.SiteList = new SelectList(items);

      return View(model);
}
@Html.DropDownListFor(m => m.SiteID, Model.SiteList)
[HttpPost]
public ActionResult LoadVMView(VM model){

var selecteSiteID = model.SiteID;
}
public class MyViewModel
{
    public MyViewModel()
    {
        this.Sites = new List<Site>();
    }

    public int ID { get; set;}
    public Student Students { get; set; }

    public DateTime Date  { get { return DateTime.Now; } }
    public bool Criteria { get; set; }      

    public List<Site> Sites { get; set; }
}
@Html.DropDownListFor(m => m.Sites, 
    new SelectList(Model.Sites, "ID", "SiteName"))
public ActionResult Index()
{
    var vm = SeedFromDatabase();
    return View(vm);
}

private MyViewModel SeedFromDatabase()
{
    var vm = new MyViewModel();
    vm.Sites.Add(new Site(0, "one"));
    vm.Sites.Add(new Site(1, "two"));
    vm.Sites.Add(new Site(2, "three"));
    return vm;
}