2011-11-30 110 views
0

我想创建这样的app_code文件夹下一个asp.net MVC 3剃须刀帮手的定义:system.web.mvc.htmlhelper不包含的内容

@using System.Web.Mvc; 

@helper Script(string scriptName, System.Web.Mvc.HtmlHelper url){  
     <script src="@url.Content"~/Scripts/" + scriptName)" type="text/javascript"></script> 
} 

,但我得到错误:

system.web.mvc.htmlhelper不包含的内容

的定义在以下行:

<script src="@url.Content"~/Scripts/" + scriptName)" type="text/javascript"></script> 

回答

1

的错误是令人惊讶的有益的 - 的HtmlHelper不包含方法的内容(),该UrlHelper一样。试试这个:

@helper Script(string scriptName, System.Web.Mvc.UrlHelper url){  
    <script src='@url.Content("~/Scripts/" + scriptName)' type="text/javascript"></script> 
} 
0

你可以这样做,但这只是在一个视图中可用。

如果你想从其它视图访问这个你应该写像一个真正的HtmlHelper

的HtmlHelper样品

创建静态类

public static class TestClass 
{ 
    public static IHtmlString Script(this HtmlHelper helper, string script) 
    { 
     // if you need the UrlHelper do this 
     // var urlHelper = new UrlHelper(helper.ViewContext.RequestContext); 
     return new HtmlString(string.Format("<script src=\"~/Scripts/{0}\" type=\"text/javascript\"></script>", script)); 
    } 
} 

那么你可以从您的视图调用它(s)

@Html.Script("jquery-1.5.1.js") 

确保您查看知道您的班级所在的命名空间。

希望这有助于

+0

嗨:感谢您的回复。但是我发布的代码有什么问题。它来自于asp.net MVC 3网站上的视频http://www.pluralsight-training.net/microsoft/players/PSODPlayer?author=scott-allen&name=mvc3-building-ajax&mode=live&clip=0&course=aspdotnet-mvc3-intro – DotnetSparrow

+0

我更新了我的答案,也许这可以帮助你...我现在看看视频 – dknaack

+0

你可以在一个视图内以你想要的方式做到这一点。如果你想从其他视图访问,你应该在我的答案中写一个真正的HtmlHelper。 – dknaack

0

我不知道为什么,但它不适合我。 运行完所有的jQuery控件不起作用,但在源代码中我看到它。

,如果我尝试包括

<script src="/Scripts/jquery-1.7.1.min.js" type="text/javascript"> </script> 

工作的所有控制。