1
我在一個名爲DropDown
的編輯器模板中有以下代碼,我用UIHint
調用該代碼。如何在Razor編輯器模板中訪問包含模型實例?
if (ViewData.ModelMetadata.AdditionalValues.ContainsKey("TemplateControlParameters"))
{
var cparms = (Dictionary<string, object>)ViewData.ModelMetadata.AdditionalValues["TemplateControlParameters"];
var listName = cparms["SelectListName"].ToString();
list = (SelectList)ViewData[listName];
}
的SelectListName控制參數應該指向「外」模式的SelectList
性質,即包含由該模板被編輯的屬性模型。但是,我無法找到引用包含模型實例的方法,只能找到包含的模型類型。我如何訪問該模板被調用的模型實例?
最接近的解決方案:我已經創建了覆蓋View(string viewName, string masterName, object model)
並注入視圖模型的選擇列表字典(IDictionary<string, SelectList>
)到視圖中的數據派生Controller類:
protected override ViewResult View(string viewName, string masterName, object model)
{
var result = base.View(viewName, masterName, model);
if ((model is ViewModelBase) && (!ViewData.ContainsKey(SelectListsViewDataKey)))
{
var vm = (ViewModelBase)model;
result.ViewData.Add(SelectListsViewDataKey, vm.GetSelectLists());
}
return result;
}
是的,我認爲最好的最終解決是包括在一個更相關的'SelectList'參考COM在視圖模型中表示外鍵的plex類型。在此之前,我已在上述編輯中實施瞭解決方法。 – ProfK 2012-03-28 04:11:41