0
應該是一個例如Customer或CustomerViewModel?ListViewModel中的模型或ViewModel
綁定到Mvc名稱空間的註釋位於ListViewModel上,所以實際上我可以傳遞Customer對象。你怎麼看?
public class ListViewModel<T>
{
[Required(ErrorMessage="No item selected.")]
public int[] SelectedIds { get; set; }
public IEnumerable<T> DisplayList { get; set; }
}
UPDATE
[HttpGet]
public ActionResult Open()
{
IEnumerable<Testplan> testplans = _testplanDataProvider.GetTestplans();
OpenTestplanListViewModel viewModel = new OpenTestplanListViewModel(testplans);
return PartialView(viewModel);
}
public class OpenTestplanListViewModel
{
public OpenTestplanListViewModel(IEnumerable<Testplan> testplans)
{
var testplanViewModels = testplans.Select(t => new TestplanViewModel
{
Name = string.Format("{0}-{1}-{2}-{3}", t.Release.Name, t.Template.Name, t.CreatedAt, t.CreatedBy),
TestplanId = t.TestplanId,
});
DisplayList = testplanViewModels;
}
[Required(ErrorMessage = "No item selected.")]
public int[] SelectedIds { get; set; }
public string Name { get; set; }
public IEnumerable<TestplanViewModel> DisplayList { get; private set; }
}
public class TestplanViewModel
{
public int TestplanId { get; set; }
public string Name { get; set; }
}
public class Testplan
{
public int TestplanId { get; set; }
public int TemplateId { get; set; }
public int ReleaseId { get; set; }
public string CreatedBy { get; set; }
public DateTime CreatedAt { get; set; }
public Template Template { get; set; }
public Release Release { get; set; }
}
我已經用完成的代碼示例更新了我的問題。我正在將我的數據庫中的測試計劃列表傳遞給viewmodel的ctor。我的Testplan業務對象與我的TestplanViewModel看起來很不一樣。有什麼需要改進的嗎?順便說一句。我刪除了通用視圖模型。 – Elisabeth 2012-08-09 18:07:44
您的OpenTestplanListViewModel視圖模型沒有默認的構造函數。這是有問題的,因爲如果您決定將此視圖模型用作動作參數,它將無法工作,因爲默認的模型聯編程序不會知道如何實例化它。另外你的'DisplayList'屬性的setter是私有的,默認的模型聯編程序將不能調用它。當然,如果你不打算使用這個視圖模型作爲動作參數,而只是將它傳遞給視圖,那麼這樣的自定義構造函數沒有問題。 – 2012-08-10 06:16:50
哈哈很好的答案。現在你說過了,我再次記住......我發現了另一個帶有2個構造函數的ViewModel,我不記得我爲什麼這麼做了......我糾正了你的2個評論者,因爲這個vm是作爲動作參數生成的。謝謝Darin。 – Elisabeth 2012-08-10 07:26:58