[英]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.