Ich habe eine Suchfunktion erstellt, um den Produktnamen anzuzeigen. Aber in meiner Ansicht zeigt es den Fehler bei foreach. Ich verstehe nicht, warum es Objektreferenz nicht auf eine Instanz eines Objekts zurückgibt.MVC 4 C#: Objektreferenz nicht auf eine Instanz eines Objekts gesetzt
Hier ist der Fehler: Hier ist mein Controller:
public ActionResult _searchPartial()
{
List<tblProduct> getProduct = new List<tblProduct>();
getProduct = db.tblProducts.ToList();
return View("_searchPartial", getProduct);
}
[HttpPost]
public ActionResult _searchPartial(string getProductName)
{
List<tblProduct> getProduct = new List<tblProduct>();
getProduct = db.tblProducts.Where(m => m.ProductName.Contains(getProductName)).ToList();
return View("_searchPartial", getProduct);
}
die Ansicht:
@model IEnumerable<JAx_Collections.Models.tblProduct>
<table style="text-align:center";>
<tr>
<th>Product Name</th>
</tr>
@foreach (var m in Model)
{
<tr>
<td>@m.ProductName</td>
</tr>
}
</table>
Das Modell:
namespace JAx_Collections.Models
{
using System;
using System.Collections.Generic;
public partial class tblProduct
{
public int ProductID { get; set; }
public int SupplierID { get; set; }
public int CategoryID { get; set; }
public string ProductName { get; set; }
public int UnitPrice { get; set; }
public int UnitsInStock { get; set; }
public int UnitOnOrder { get; set; }
public virtual tblCategory tblCategory { get; set; }
public virtual tblSupplier tblSupplier { get; set; }
}
}
Eine 'foreach' ist syntaktischer Zucker für das, was im Wesentlichen zu einem Aufruf von' GetEnumerator() 'wird. Ihr 'Model' ist in Ihrem GET null. Haben Sie versucht, einen Haltepunkt in der return-Ansicht ("_ searchPartial", getProduct) zu setzen? Zeile in der GET-Aktionsmethode, um sicherzustellen, dass "getProduct" nicht null ist? Sie könnten denken, es wird nicht Null sein, weil Sie es initialisiert haben. Aber buchstäblich die Zeile nach der Initialisierung, die Sie ihren Wert auf etwas anderes ... setzen, die 'null' sein kann. –
@SimonWithehead wie man eine Bruchstelle setzt? Ich bin gerade neu in C# Programmierung – progammer101
Sie würden gut tun, einige grundlegende Debugging zu lernen, bevor Sie in ein MVC-Projekt springen. Es wird Ihnen viel Zeit sparen. [Hier finden Sie einen MSDN-Artikel zur Verwendung von Haltepunkten] (https://msdn.microsoft.com/en-us/library/5557y8b4.aspx). –