It sounds like what you really need is a Food model which contains these values. Over-simplifying it might look like this:
public class Food
{
public int ID { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
Then in your view model you'd select the ID of the corresponding Food items, rather than the price or the name. So the select wouldn't contain the actual data, just a reference to the data. Its value would be the ID and its text would be the name (or price, or a combination thereof, whatever you want to display). Something like this perhaps:
@Html.DropDownListFor(model => model.proj.FoodID, Model.FoodSelectList, "Choose...")
In server-side code, given the ID of the entity selected, you'd fetch the entity itself from whatever the underlying data store is and then you'd have all of the information about that entity. For convenience it could even be lazy-loaded from the view model. Something like:
public int FoodID { get; set; }
public Food Food
{
get
{
return Food.Fetch(FoodID);
}
}
There are plenty of ways to accomplish that, some may fit your model structure more than others, so this is just an example to illustrate the idea. But the main point is that the select would be referencing the entity instead of trying to contain the entity, since a select (and HTTP POST values in general) is really just a key/value pair.