我正在爲我的項目使用3層體系結構。但是對於一個實例,我需要從一個方法返回Object並檢索值。 這裏是我的兩個型號:如何在C#中返回並檢索對象值?
public class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
public decimal Price { get; set; }
}
public class Item
{
public Product Products { get; set; }
public int Quantity { get; set; }
}
,我的方法是:
public class ProductGateway{
public List<Product> GetProductByProductId(int productId)
{
List<Product> productList = new List<Product>();
SqlConnection connection = new SqlConnection(ConnectionString);
string query = "SELECT ProductName,cast(Price as decimal(10,2)) as Price FROM Product WHERE ProductId='" + productId + "' ";
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Product product = new Product();
product.ProductName = reader["ProductName"].ToString();
product.Price = (decimal)reader["Price"];
productList.Add(product);
}
return productList;
}
}
和我的控制器:CartController
ProductGateway gateway=new ProductGateway();
public ActionResult BuyProduct(int id)
{
if (Session["cart"]==null)
{
List<Item> cart= new List<Item>();
cart.Add(new Item()
{
Products = gateway.GetProductByProductId(id),// this line getting an error(no list)
Quantity = 1
});
Session["cart"] = cart;
}
而且我CSHTML觀點:
@{
var cart = (List<Item>) Session["cart"];
}
@foreach (var item in cart)
{
<tr>
<td class="cart_product">
<a href="@Url.Action("ProductDetails", "Product", new { id = item.Products.ProductId })">@item.Product.Price </a>// an error occurred on ProductId and Price
現在的問題是,我的返回類型列表中選擇控制器上Products = gateway.AllProductsByProductId(id)
得到一個錯誤,並要求變更項目模型Public List<Product> Products
。因此我想從GetProductByProductId發送對象,以免在車控制器錯誤。有沒有辦法解決這個問題,或者我需要更改整個代碼?我真的很困惑這種情況。
我的要求
1.I需要在我CSHTML視圖中使用的產品屬性,如@item.Product.Price
。 (現在的錯誤:無法解析符號Price
)
2.So我的網關應該返回一個產品對象,而不是Porduct的列表(產品現在網關返回列表)。
3.如果可以從網關返回對象(假設網關返回每個ID單品),那麼我怎麼能檢索對象從車控制
感謝
是什麼'AllProductsByProductId'?你已經顯示了另一種方法,但是你正在調用這個方法。 – CodingYoshi
@CodingYoshi編輯 –
爲什麼要退從'GetProductByProductId(INT productId參數)''一個List'?你有多個產品具有相同的'productId'?我懷疑是這樣。因此,返回一個產品,然後您可以在您的視圖中使用該產品。 – CodingYoshi