【问题标题】:ASP.NET MVC Custom ControlsASP.NET MVC 自定义控件
【发布时间】:2011-12-20 19:07:07
【问题描述】:

可以肯定地说,使用 ASP.NET MVC 的自定义控件大多数时候只是部分视图吗?如果是这样的话,我猜它总是由实现应用程序来决定这些控件的行为(通过控制器代码)?

我进行了一些搜索,几乎没有关于 ASP.NET MVC 自定义控件的资源(要么是这样,要么是我的 Google 技能不符合标准)。

【问题讨论】:

  • 我认为部分视图代替了 MVC 的自定义控件,为什么您需要自定义控件?
  • @EmmanuelN 好问题。我正在考虑自定义控件以满足日历、菜单等需求。我意识到这些可以在每个应用程序中动态创建,但如果可能的话,代码可重用性是最好的。
  • 您指的是辅助方法而不是自定义控件
  • 对于像 mvc 中的东西,我认为最好依赖客户端脚本,尤其是第三方脚本库,如 jQuery

标签: asp.net-mvc asp.net-mvc-3


【解决方案1】:

部分视图更多地是一个控件或一组可以在视图之间共享的控件的模板。

我不确定它们本身就是“自定义控件”,听起来您是从 ASP 角度来看的。

我认为你需要先进入 MVC 的思维模式,然后离开 ASP。

因此,对于项目列表,您可能有一个获取项目列表的部分视图和一个获取实际项目的部分视图。所以“pvCustomerList<List<customer>>”和“pvCustomer<customer>”。

pcCustomerList 遍历列表并为列表中的每个客户创建一个 pvCustomer。

部分视图在控制器中并没有真正的代码。相反,它们是从视图传递的数据。如果局部视图中有提交操作,那么这要么由视图控制器处理,要么由 jQuery 回发。

我希望这可以为您解决一些问题。

您查看过 NerdDinner 示例吗?

【讨论】:

  • 我是一名 ASP.NET WebForms 开发人员,正在转向美妙的 MVC 世界(到目前为止我很喜欢它)。假设您想要一个日历,并且您想要在多个 MVC 应用程序中重用它。有什么办法呢?不是 NerdDinner MVC 1/2 吗?我使用 Razor 视图引擎直接进入了 MVC 3,但对于真正分析非 MVC 3 代码和逻辑,我有点犹豫,因为它可能会让我失望。
  • @Shark 为此使用辅助方法,从 Html 辅助类编写扩展方法
  • 跨应用程序重用通常需要您复制部分视图。这也可能有助于stackoverflow.com/questions/1532576/…
  • 这与问题没有直接关系,但也可以查看 jQuery 插件以实现控件的可移植性
  • @MilanJaric 您真的应该将该评论作为答案。我认为这可能是最接近自定义控件的最佳服务器端方式,正如 WebForms 开发人员所看到的那样。
【解决方案2】:

asp.net mvc 网站上有一篇关于表单助手(视图的助手方法)的好文章。解释了如何创建自定义帮助方法

链接是http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2010-09-23
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多