将一个属性及其值“注入”一个对象。
我有以下由Entity Framework 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 Engine
答案 0 :(得分:1)
在与实体框架模型相同的命名空间中,即。放置.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;
数量不属于getSpecificProductToShoppingList_Result,因为这是我的数据库类型,但我已经通过部分类添加了它。