asp.net-mvc-4 – 如何让你的MVC控制器DRY为Edit- Save- ValidateFail
|
我有一个管理用户事件,它采用可选的用户ID并显示用户编辑屏幕.这个屏幕有一个manageUserViewModel. 我的“管理”页面有一些依赖项 – 例如,PageTitle,要提交的方法等. 如果我验证失败,我需要再次显示管理屏幕,但这一次,使用传递到同一方法的视图模型. 在失败场景中提供这些依赖关系并不是很干. 如何重复依赖关系?我尝试将它们放入一个单独的方法中,但这感觉不对. public ActionResult Manage(Guid? UserID)
{
User user = this._UserLogic.GetUser(UserID);
ViewBag.Title = "User List";
ViewBag.OnSubmit = "Save";
ManageUserViewModel uvm = Mapper.Map<User,ManageUserViewModel>(user);
return View("Manage",uvm);
}
[AcceptVerbs("POST")]
public ActionResult Save(ManageUserViewModel uvm)
{
User user = this._UserLogic.GetUser(uvm.UserID);
if (!ModelState.IsValid)
// This is not very DRY!!!
ViewBag.Title = "Manage User";
ViewBag.OnSubmit = "Save";
return View("Manage",uvm);
}
Mapper.Map<ManageUserViewModel,User>(uvm,user );
this._UserLogic.SaveUser(user);
return RedirectToAction("Manage",new { UserID = user.ID });
}
解决方法我觉得你误解了DRY. DRY并不意味着“永远不要重复自己”,这意味着你不应该在没有意义的情况下重复自己.不同的观点有不同的要求,创建一个复杂的结构只是为了避免重复自己违反其他最佳实践,如KISS和SRP. SOLID很有意思,因为单一责任原则经常与不要重复自己不一致,你必须想出一个平衡点.在大多数情况下,DRY会因为SRP更为重要而失败. 在我看来,你在这里有代码处理多个职责,这样你就可以避免多次编写类似的代码.我不同意这样做,因为每个观点都有不同的责任和不同的要求. 我建议只为每个操作创建单独的控制器操作,视图和模型,特别是如果验证要求不同的话.您可以执行一些操作(例如使用部分视图或编辑器模板)来减少重复,但通常不会增加大量复杂性以避免重复. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core-mvc – MVC6路由到单页面应用程序而不会丢失4
- asp.net-mvc-4 – 如何在服务器上安装ASP.NET MVC4 RC(2008
- asp.net-mvc-3 – 我可以传递视图模型到动作链接来生成路由
- 使用ASP.net MVCJQuery将HTML标签(代码)作为字符串发布
- asp.net-mvc – MVC中TextBoxFor的DisplayFormat
- asp.net-mvc-routing – 如何防止Url.RouteUrl(…)从当前请
- asp.net-mvc-3 – 如何在Razor中创建一个else if语句?
- asp.net-mvc – Ajax.BeginForm和验证
- asp.net – 无法加载类型’System.ServiceModel.Activation
- 如何在ASP.Net Web API中为特定控制器启用Windows身份验证
- 使用ASP.NET MVC和JQuery表单插件/文件上传检测I
- asp.net – scriptresource.axd 404错误在asp ne
- 为什么Asp.Net MVC 5在_Layout.cshtml的底部放置
- asp.net-mvc – 使用CSVHelper将流输出到浏览器
- asp.net – 如何将ApplicationDbContext从Owin管
- asp.net – 使用web.config进行密码保护的文件夹
- asp.net – 通过javascript从代码后面访问变量
- ASP.NET网站攻击:如何回应?
- ASP.NET成员资格创建用户,而不需要QuestionAndAn
- asp.net – 生产网络服务器上的间歇性高CPU(100%
