如何在MVC4的ViewModel、Controller和View中使用字典?

5
我有一个ViewModel如下所示,
public class EnrollPlanPriceLevelViewModel
{
    public EnrollPlanPriceLevel EnrollPlanPriceLevels { get; set; }        
    public Dictionary<PriceLevel,decimal> Prices { get; set; }

}

我在我的视图中编写了代码,但我无法为价格创建视图。请有人帮帮我!

 @{
int i = 0;
foreach (FCA.Model.PriceLevel p in ViewBag.PriceLevelID)
{
    i = i + 1;
                    <div class="span4">                            
                        @Html.TextBoxFor(model => model.Prices[p], new { @placeholder = "Price" })
                    </div>
}
                }

我该如何在控制器中调用字典对象的值?

我不太明白你想要实现什么,能否展示一下控制器函数? - Marthijn
2个回答

8

ViewModel :

public class EnrollPlanPriceLevelViewModel
{

    public EnrollPlanPriceLevel EnrollPlanPriceLevels { get; set; }
    public Dictionary<string,decimal> Prices { get; set; }      
}

我的控制器的Get方法应该像这样初始化'Key'和'Values',以便您可以在视图中循环每个KeyValue对。

控制器的GET方法:

 public ActionResult Create()
    {
        var model = new EnrollPlanPriceLevelViewModel();
        model.Prices = new Dictionary<string, decimal>();
        foreach (PriceLevel p in db.PriceLevelRepository.GetAll().ToList())
        {
            model.Prices.Add(p.PriceLevelID.ToString(), 0);
        }            
        return View(model);
    }

使用字典进行视图:

 <div class="span12">
                @{           
foreach (var kvpair in Model.Prices)
{        
                    <div class="span4">
                        @Html.TextBoxFor(model => model.Prices[kvpair.Key], new { @placeholder = "Price" })
                         @Html.ValidationMessageFor(model => model.Prices[kvpair.Key])
                    </div>

}
                }
            </div>

控制器的POST方法:呈现字典值

输入图像描述


0

prices 是一个字典项(例如 KeyValuePair<PriceLevel, decimal>)。

因此,您必须分别绑定每个对的属性:KeyValue


2
你能详细说明一下你的答案吗? - sridharnetha
到底有什么难以理解的? - Sam Axe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接