【发布时间】:2011-03-17 17:58:32
【问题描述】:
我是 ASP.NET MVC 的新手,遇到以下问题。
让我们从一些代码开始:
视图模型:
public class StatesEditViewModel
{
[Required]
public virtual int StateId { get; set; }
[Required]
public virtual string Name { get; set; }
public virtual int CountryId { get; set; }
public List<Country> Countries { get; set; }
}
控制器:
public ActionResult Edit(int id)
{
using (DataEntities context = new DataEntities())
{
UnitOfWork uow = new UnitOfWork(context);
State s = uow.States.GetById(id);
StatesEditViewModel vm = new StatesEditViewModel();
vm.StateId = s.StateId;
vm.Name = s.Name;
vm.CountryId = s.CountryId;
vm.Countries = = uow.Country.GetAll().ToList<Country>();
return View(vm);
}
}
[HttpPost]
public ActionResult Edit(int id, StatesEditViewModel vm)
{
if (ModelState.IsValid)
{
using (DataEntities context = new DataEntities())
{
UnitOfWork uow = new UnitOfWork(context);
State s = uow.States.GetById(id);
p.Name = vm.Name;
p.CountryId = vm.CountryId;
uow.Commit();
return RedirectToAction("Index");
}
}
else
{
//vm.Countries <-- This is NULL
return View(vm);
}
}
问题在于 vm.Countries 为空。是否有任何选项/解决方案可以避免重新填充 ViewModel 的该部分?
以防万一,我在视图中使用 Telerik ComboBox 控件:
@(Html.Telerik().ComboBox()
.Name("CountryId")
.BindTo(new SelectList(Model.Countries, "CountryId", "Name"))
.SelectedIndex(Model.CountryId)
.Filterable()
)
谢谢!
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-3 telerik razor viewmodel