HtmlHelpers非常有用,我也在使用AjaxHelpers,直到我想做他们不能做的事情......所以现在我更喜欢jquery + javascript,但我不喜欢用javascript编写(mayby因为我永远不会知道它和我想要的一样好,并且为了让生活更轻松我想实现像JQueryHelper这样的东西,但是现在我不知道如何
我想在“Helper”解析的URL中使用,因为大多数方法只是将数据传递给控制器等...并更新UI的某些部分,所以我想创建类似AjaxHelper的东西,但是基于JQuery ,而不是MSScripts。
我应该在这门课程中包括哪些内容?我怎样才能获得上下文,网址并生成适当的javascript代码,这些代码可以通过动态注入 恩。
<div onclick=JQuery.Action("<ActionName>", "<Controller>", new { param1, param2}, <Id to Update>)> My Div</div>
如何在HtmlHelper或AjaxHelper中实现?
编辑: 我尝试了一些简单的实现,但我认为我缺乏知识,不知道如何实现扩展的类。
我有ClassA(类)和ClassAExt(扩展名): 我有类似的东西:
static public class ClassAExt{
public static MvcHtmlString Method(this ClassA classA) {
}
}
但是在View()中,当我使用ClassAExt.Method()时我还要传递ClassA的实例(在助手Ajax和Html中这个参数是灰色的(可选?不需要?),如何获得这样的效果)。
答案 0 :(得分:1)
我不确定我是否理解你的问题。
在页面渲染和用户控制渲染过程中,HtmlHelper也会被实例化(即new HtmlHelper()
)。 Ajax
和URL
助手也可以实例化,这样就可以访问各种变量,例如HttpContext等。
因此,为了使用与ClassA
相关的助手类,您也需要实例化它。我想那个问题会导致我该怎么做?您可能需要扩展ViewPage
,ViewUserControl
和ViewMasterPage类。
答案 1 :(得分:0)
它不明显因为它如此明显。基本上,你扩展了html helper的扩展名:
public static HtmlString Foo(this HtmlHelper helper, string param)
{
//do whatever
}
您可以从HtmlHelper获取请求上下文等。
答案 2 :(得分:0)
我看到它,你的问题是你不懂扩展方法。
如果你有
static public class ClassAExt{
public static MvcHtmlString Method(this ClassA classA) {
}
}
你在这个视图中使用它:
<%: ClassAInstance.Method() %>
要做到这一点,你必须将<add namespace="NamespaceOfClassA" />
添加到web.config的pages / namespaces部分。
这样,您可以扩展HtmlHelper
类来执行您需要的任何操作,因此实际上没有什么是不能做的。如果你想要它做某些事情,默认情况下不能,只需编写一个扩展方法。同样下载MVC Futures程序集,还有一个dll Microsoft.Web.Mvc
,其中包含HtmlHelper
的许多有用的扩展方法(等等)。
如果您想知道他们如何实施HtmlHelper
或AjaxHelper
,您可以查看MVC源代码。
链接下载MVC Futures和MVC源代码:http://aspnet.codeplex.com/releases/view/41742