asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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-mvc-4 – 如何让你的MVC控制器DRY为Edit-> Save-> ValidateFail全部内容,希望文章能够帮你解决asp.net-mvc-4 – 如何让你的MVC控制器DRY为Edit-> Save-> ValidateFail所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: