0
我是ASP.NET MVC的新手,我遇到以下问题。ViewModel在服务器端验证中丢失的一部分
让我们先从一些代码:
视图模型:
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的组合框控件在我看来:
@(Html.Telerik().ComboBox()
.Name("CountryId")
.BindTo(new SelectList(Model.Countries, "CountryId", "Name"))
.SelectedIndex(Model.CountryId)
.Filterable()
)
谢谢!
非常感谢! – Leandro 2011-03-17 19:41:36