如何:在ASP.Net MVC中创建一个Ajaxified HTMLHelper

时间:2009-05-12 13:07:12

标签: asp.net-mvc

我越是深入了解MVC,我越喜欢它,并想想我是如何使用Web Forms :)

但是如果我想要封装一个控件,让我们说一个组合框,然后我会创建一个用户控件并添加这个组合框并声明属性,然后我可以删除它在任何页面上,如果我更改用户控件,则更改适用于站点中的所有实例,在Web表单中非常简单。

现在在MVC我已经了解到你可以通过扩展方法创建额外助手,这真的很酷,但我的目标是我希望它被Ajax化。

这就是我想要的:

  • 我希望它模拟Web表单,如文本属性,选定值等...
  • 我将使用jquery进行酷炫效果,例如在鼠标悬停时突出显示一个项目,所以我想要一种方法来包含这个HTML帮助程序的脚本,所以我不必在每个组合框的视图或母版页上写它添加,换句话说,例如Telerik Controls或任何Web窗体服务器控件。

另一个问题是在服务器上呈现的HTML帮助程序?或者它们是纯HTML,没有像服务器控件那样的服务器处理?

注意:我知道MVC已经有一个列表HTML Helper,但我以此为例。

提前感谢。

2 个答案:

答案 0 :(得分:1)

HtmlHelper扩展方法在服务器上的View中执行。它们生成的结果HTML包含在发送到浏览器的页面中。

您无法使用HtmlHelper扩展方法创建传统的ASP.NET WebForms服务器控件,就像您描述的那样,“模拟Web窗体,如文本属性,选定值等......”如果您能够实现这样的使用ASP.NET MVC的事情,那么你应该首先在项目中使用ASP.NET WebForms。

我真的建议您选择“Pro ASP.NET MVC 1.0”的副本。这本书是由Rob Conery,Scott Hanselman,Phil Haack和Scott Guthrie编写的,并且在使用ASP.NET MVC构建应用程序/站点时,充满了大量关于“做什么和为什么”的解释。以及与ASP.NET WebForms和ASP.NET MVC之间的差异的直接比较。此外,本书的第一章是关于使用ASP.NET MVC构建功能齐全的应用程序的完整教程,而不是其他所有书籍演示的传统“Hello World”示例。

答案 1 :(得分:1)

你看过AjaxHelper类及它的扩展吗?这似乎就是你要找的东西。您可以查看AjaxExtensions.cs文件的源代码,然后按照相同的模式创建自己的AjaxHelper扩展。

是的,HtmlHelper(和AjaxHelper)函数通过服务器上执行的C#代码输出Html字符串。