如何“;注入“;属性及其对对象的值
本文关键字:对象 注入 属性 如何 | 更新日期: 2023-09-27 18:19:36
目标
将属性及其值"注入"到对象中。
问题
我有以下由实体框架5创建的对象:
public partial class getSpecificProductToShoppingList_Result
{
public string productName { get; set; }
public string measureAbbreviation { get; set; }
}
我正在使用Session创建一个购物列表,当用户向列表中添加内容时,应用程序会调用一个过程来获取有关该产品的信息,这些信息将分别填充上述属性。
重点是:用户可以添加他想要的产品数量,这不是数据库的责任。
要添加产品,用户必须访问MyApp.com/Products/Add?productId=1&quantity=5
。我可以使用以下内容检索有关产品的所有信息:
ShoppingListController.cs:
public ActionResult Add(Nullable<int> productId, int quantity)
{
if (Session["ShoppingList"] == null)
{
Session["ShoppingList"] = new
List<getSpecificProductToShoppingList_Result>();
}
getSpecificProductToShoppingList_Result product =
Products.BuildItemToShoppingList(productId);
((List<getSpecificProductToShoppingList_Result>)Session["ShoppingList"])
.Add(product);
return View("Index");
}
然后,视图:
@foreach (var item in
(List<MyApp.Models.Data.getSpecificProductToShoppingList_Result>)
Session["ShoppingList"])
{
<p>@item.productName | @item.measureAbbreviation</p>
}
我的问题很简单:如何添加类似@item.quantity
的内容?
我在想什么
我在想这样的事情(注意产品变量声明后的行):
public ActionResult Add(Nullable<int> productId, int quantity)
{
if (Session["ShoppingList"] == null)
{
Session["ShoppingList"] =
new List<getSpecificProductToShoppingList_Result>();
}
getSpecificProductToShoppingList_Result product =
Products.BuildItemToShoppingList(productId);
((List<getSpecificProductToShoppingList_Result>)Session["ShoppingList"])
.Insert(productId,
new KeyValuePair<string, int>("quantity", quantity))
.Add(product);
return View("Index");
}
但是——当然——没有成功。语法是错误的,但只是为了说明。
详细信息
我使用的是C#.Net+MVC 4+Razor引擎
在与实体框架模型相同的命名空间中,即在你放置.edmx文件的同一文件夹中,创建一个与实体框架中定义的类同名的新类,我认为在你的情况下是getSpecificProductToShoppingList_Result
。
将类标记为分部,然后可以向其添加自己的属性。
例如:你的.edmx设计器文件中有这个:
[EdmEntityTypeAttribute(NamespaceName="YourModel", Name="getSpecificProductToShoppingList_Result")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class getSpecificProductToShoppingList_Result : EntityObject
{
...
}
这是自动生成的,你不能更改它来添加一些属性,但它被标记为部分,以便你对其进行扩展,例如,如果我添加:
public partial class getSpecificProductToShoppingList_Result
{
public int Quantity {get; set; }
}
C#将它们连接在一起,所以在我的控制器中,我可以进行
var something = new List<getSpecificProductToShoppingList_Result>();
something.First().quantity = 50;
Quantity不属于getSpecificProductToShoppingList_Result,因为这是我的数据库类型,但我通过分部类添加了它。