gpt4 book ai didi

asp.net-mvc-2 - ASP>net MVC 可重用部分

转载 作者:行者123 更新时间:2023-12-04 12:37:28 25 4
gpt4 key购买 nike

在 winforms 和 ASP.net 中使用 .net 几年后,我现在开始进入 MVC(我知道有点晚)。对我来说,一个主要的困惑是可重用“组件”的概念,类似于 webforms 中用户控件的概念。

例如,我希望在我网站的成员(member)区中有许多“小部件”,其中之一是登录用户帐户管理器的详细信息。我可以将其创建为部分,但是当页面加载时,数据需要作为 ViewModel/View Data 的一部分传入。我想在许多不同的部分中使用这个小部件,这意味着我需要将代码放入许多不同的 Controller 中以将数据传递给它。这似乎违反了 DRY 原则,还是我在这里遗漏了什么?理想情况下,我希望所有内容都封装在 1 部分中,然后可以在任何页面中使用。

最佳答案

您可以通过三种方式:

1)对于没有太多逻辑的简单控件,您可以为控件创建自定义 View 模型的新实例:
Html.RenderPartial("YourControl", new YourControlViewModel () { Param1="value1", Param2 = Model.AnotherValue });

2)如果你需要一些后端逻辑的控件,你可以使用
Html.RenderAction("ActionName", "SomeControllerName", RouteValuesDictionary);
它将调用标准 Controller 操作,使用 View ,并将结果输出插入回页面。您可以向 Controller 方法添加 [ChildActionOnly] 属性,以确保该方法只能从 Html.RenderPartial 中使用。它稍微违反了 MVC 原则( View 不应调用 Controller ),但它非常适合小部件,并且它在 Ruby on Rails 世界中使用没有太多问题。您可以查看来自 Haacked 的精彩文章

3) 为自定义日期格式、计算等任务创建自定义 html 助手。

在你的情况下,我会选择第二个。

关于asp.net-mvc-2 - ASP>net MVC 可重用部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4657021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com