2011-10-28 36 views
0

我在asp.net mvc 3中看到了很多编辑动作的例子,这就是我困惑的原因。例如,如何工作UpdateModel和TryUpdateModel方法?或者如果我想更新并非所有字段,如何实现编辑操作?在asp.net中实现编辑动作mvc 3

任何人都可以给我一个关于在asp.net 3中实现编辑动作的链接吗?

回答

1

只更新所需字段的最佳方法是为其创建单独的视图模型。例如,假设你有用户类这样

public class User 
{ 
    public int Id {get;set;} 
    public string UserName {get;set} 
    public bool IsAdmin {get;set;} 
} 

而且假设你不想让用户的供应值IsAdmin财产。你创建一个这样(无IsAdmin场)视图模型

public class EditUserViewModel 
{ 
    public int Id {get;set;} 
    public string UserName {get;set} 
} 

而编辑动作假的东西

public ActionResult Edit(EdituserViewModel model) 
{ 
    If(ModelState.IsValid) 
    { 
     User user = _repository.GetUser(model.Id); 
     user.UserName = model.UserName; 
     _repository.Update(user); 
     return RedirectToAction("Index"); 
    } 
    return View(model); 
} 

这样,有没有方法可行,从客户端提供IsAdmin。您可能还想看看AutoMapperJimmy Bogard's blog将视图模型映射到域模型。 Jimmy在asp.net mvc中获得了关于使用ViewModels和AutoMapper的文章。

+0

UpdateModel和TryUpdateModel如何工作?他们使用哪个数据提供者?以及如何将EdituserViewModel与视图绑定? – Alexandre

+0

@model的视图应该是EditUserViewModel,并且通常会为其生成编辑器。我不了解数据提供者,你的意思是价值提供者吗? UpdateModel和TryUpdate模型获取它们执行绑定的初始对象 – archil

+0

在何处阅读UpdateModel和TryUpdate模型绑定?你能给我任何链接吗?我没有发现任何关于它的事情。 – Alexandre