在 winforms 和 ASP.net 中使用 .net 几年后,我现在开始进入 MVC(我知道有点晚了)。对我来说,一个主要的困惑是可重用“组件”的概念,类似于网络表单中用户控件的概念。
例如,我希望在我的网站的会员区域内有许多“小部件”,其中之一是登录用户帐户管理器的详细信息。我可以将其创建为部分内容,但是当页面加载时,需要将数据作为 ViewModel / View Data 的一部分传入。我想在许多不同的部分中使用这个小部件,这意味着我需要编写代码将数据传递到许多不同的控制器中。这似乎违反了 DRY 原则,还是我在这里遗漏了一些东西?理想情况下,我希望所有内容都封装在 1 个部分中,然后可以在任何页面中使用。
您可以采取三种方式:
1)对于没有太多逻辑的简单控件,您可以为控件创建自定义视图模型的新实例:
Html.RenderPartial("YourControl", new YourControlViewModel () { Param1="value1", Param2 = Model.AnotherValue });
2)如果你需要一些后端逻辑的控制,你可以使用
Html.RenderAction("ActionName", "SomeControllerName", RouteValuesDictionary);
它将调用标准控制器操作,使用视图,并将结果输出插入回页面。您可以将 [ChildActionOnly] 属性添加到控制器方法,以确保该方法只能从 Html.RenderPartial 中使用。它稍微违反了 MVC 原则(视图不应调用控制器),但它对于小部件来说非常有用,并且在 Ruby on Rails 世界中使用它没有太多问题。您可以查看精彩的文章Haacked http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx
3) 为自定义日期格式、计算等任务创建自定义 html 帮助器。
对于你的情况,我会选择第二个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)