我有一個項目,我在MS VS 2012年工作我有一個從數據庫中拉下的數據,並把它變成一個類數組類。代碼的這部分工作無縫。我遇到的問題是將數據傳送到視圖以供顯示。看起來從控制器你應該有能力通過類,但我還沒有找到它。類MVC傳球達陣,以查看
在模型
public Guid BoxGUID {get;set;}
[Required(ErrorMessage="A box number is required")]
public int BoxID { get; set; }
public DateTime Date { get; set; }
[Required(ErrorMessage="Please pick an option")]
public string BCAppearance { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string BCTrash { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string BCPad { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string BCClean { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string BCStrap { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string BCDoc { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string BCMaint { get; set; }
public string BCMaintNote { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string UBWrap { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string UBPiece { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string NPSec { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string NPDmg { get; set; }
[Required(ErrorMessage = "Please pick an option")]
public string NPHardware { get; set; }
public string TruckNum { get; set; }
public string Images { get; set; }
public int CompletedFlag { get; set; }
//odd items for manipulating data
public string curDate { get; set; }
public string boxGUIDString { get; set; }
的int分貝代碼部分:
public BoxInfo[] getBox(int count)
{
string query = "select * from Box where CompletedFlag = '0'";
BoxInfo[] boxInfo = new BoxInfo[count];
//create boxinfo array
SqlCommand cmd = new SqlCommand(query, oConn);
SqlDataReader rdr = cmd.ExecuteReader();
while (rdr.Read())
{
for (int i = 0; i < count; i++)
{
boxInfo[i] = new BoxInfo();
// string test = rdr[0].ToString();
boxInfo[i].BoxGUID = new Guid(rdr[0].ToString());
boxInfo[i].BoxID = (int)rdr[1];
boxInfo[i].Date = (DateTime)rdr[2];
boxInfo[i].BCAppearance = rdr[3].ToString();
boxInfo[i].BCTrash = rdr[4].ToString();
boxInfo[i].BCPad = rdr[5].ToString();
boxInfo[i].BCClean = rdr[6].ToString();
boxInfo[i].BCStrap = rdr[7].ToString();
boxInfo[i].BCDoc = rdr[8].ToString();
boxInfo[i].BCMaint = rdr[9].ToString();
boxInfo[i].BCMaintNote = rdr[10].ToString();
boxInfo[i].UBWrap = rdr[11].ToString();
boxInfo[i].UBPiece = rdr[12].ToString();
boxInfo[i].NPSec = rdr[13].ToString();
boxInfo[i].NPDmg = rdr[14].ToString();
boxInfo[i].NPHardware = rdr[15].ToString();
boxInfo[i].TruckNum = rdr[16].ToString();
boxInfo[i].Images = rdr[17].ToString();
boxInfo[i].CompletedFlag = 0;
}
}
return boxInfo;
}
在控制器
namespace BoxCheckInApp.Controllers
{
public class AddBoxController : Controller
{
//
// GET: /AddBox/
public CodeDB D = new CodeDB();
public CodeODB O = new CodeODB();
public BoxInfo box = new BoxInfo();
public ActionResult Boxes()
{
D.Open();
int count = D.getRows();
if (count != 0)
{
BoxInfo[] myBoxes = new BoxInfo[count];
myBoxes = D.getBox(count);
D.Close();
return View();
}
else
{
String noBoxes = "There are no incomlete boxes to edit";
D.Close();
return View();
}
}
在控制器我需要myBoxes傳遞給視圖。我的盒子是一個BoxInfo對象數組。每個對象都是數據庫的一行。
這個解決方案工作爲好,沒有任何缺點在性能方面使用視圖包過這種方法嗎? – Danimal
表現,沒有。它們都以控制器的'ViewData'結尾。然而,可用性更好,因爲Model是一個具體類型,而ViewBag是動態的。 https://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag(v=vs.118).aspx – Nkosi