簡體   English   中英

ASP Net MVC 5和帶有Linq的列表框

[英]Asp net MVC 5 and listbox with linq

在經過數天的關於如何使用linq填充列表框的閱讀后,我完全迷失了要做這項工作所需要做的事情。 我知道我必須有一個viewmodel之類的東西,但是由於我無法在同一視圖中引用2個模型,所以我不知道該怎么做。

這是我的模型

public class ABC
{
    public int a { get; set; }
    public int b { get; set; }
    public int c { get; set; }
    public string d { get; set; }
    public string Type { get; set; }
    public int ID { get; set; }

    public class  ABCDBContext : DbContext
    {
        public DbSet<ABC> ABCs { get; set; }
    }
}

public class ABCModel
{
    public string type{ set; get; }
    public List<ABC> ABCs { set; get; }
}

我知道控制器缺少很多東西,但我不知道如何用linq查詢填充列表,也不知道如何在不使用beginform的情況下從視圖中調用此控制器(我將在此表單中擁有多個列表框)

public ActionResult GetStuff()
    {

       var Types = from m in db.ABCs
                   select m.Type.Distinct();

        return View(Types); 
    }

然后在我看來,我需要擁有@model IEnumerable,這樣我就可以在該頁面上顯示abc表的所有內容。

因此,我可以創建一個填充lsitbox的viewModel(我將需要用abc擁有的參數至少填充6個,以便用戶可以使用這些值搜索abcs,但是我想如果我能理解如何做1我可以用我想要的東西完成6)並允許我顯示abc的條目嗎?

這就是觀點(我知道很多事情都錯了,但僅舉一個例子)

@using (Html.BeginForm("getSelectedValues", "ABC", FormMethod.Get))
{
    Type:@Html.DropDownList() 

    a:@Html.DropDownList()

    b:@Html.DropDownList()

    //and so on

    <input type="submit" value="Filter" />
}

請原諒我對錯過的任何方面的無知,但是我是ASP Net MVC 5的新手,即使有人可以指導我或向我發送關於我必須做的事情的指南,我也將不勝感激。

我不確定您要做什么,但這可能是解決方案。

首先,您將創建一個ViewModel,例如:

public class MyViewModel
{
 List<ABC> abcs { get; set; } // Your database values that you're going to loop through
 List<WhateverALookupShouldBe> aDropDownValues { get; set; }
 List<WhateverBLookupShouldBe> bDropDownValues { get; set; }
 // etc
 }

在您的數據或控制器中填充這些值。

如果要遍歷列表並提交值,則需要一個編輯器,因此請在視圖文件夾下創建一個名為“ EditorTemplates”的文件夾。 然后添加一個與您的模型同名的cshtml文件,例如ABC。

在您的主視圖上,您​​將具有:

@model MyViewModel

@Html.EditorFor(model => model.abcs)

現在,在您的ABC編輯器模板中,您將為下拉列表編寫如下代碼:

@model ABC

@Html.DropDownListFor(model => model.a, new SelectList(Model.aDropDownValues, "DataValueFieldName", "DataTextFieldName"));

當您將其提交回去時,您應該將數據返回給您。

我建議您創建一個名為MYPAGENAMEViewModel.cs的ViewModel,然后在該ViewModel中擁有view.cshtml文件所需的所有“模型” /數據。...即類似以下內容:

public class MYPAGENAMEViewModel
{
    public List<Types> MyTypes { get; set; }
    public List<OtherTypes> MyOtherTypes { get; set; }
}

然后采取行動。

public ActionResult GetStuff()
{
   MYPAGENAMEViewModel myViewModel = new MYPAGENAMEViewModel();

   myViewModel.MyTypes = from m in db.ABCs
                       select m.Type.Distinct();

   myViewModel.MyOtherTypes = from m in db.CBAs
                              select m.Type.Distinct();

   return View(myViewModel); 
}

然后在您的視圖頂部:

@model MYPAGENAMEViewModel

然后在視圖中:

MyTypes<br />
@Html.DropDownListFor(model => model.MyTypes.TypeId, (SelectList)model.MyTypes.TypeName) 

MyOtherTypes<br />
@Html.DropDownListFor(model => model.MyOtherTypes.TypeId, (SelectList)model.MyOtherTypes.TypeName) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM