5

所以 MVC 4 引入了脚本和样式捆绑。这允许这样做:

public static void RegisterBundles(BundleCollection bundles)
    {
    bundles.Add(new ScriptBundle("~/bundles/mobile").Include(
                    "~/Scripts/jquery.mobile-*"));

然后在像这样的剃刀视图中使用:

@Scripts.Render("~/bundles/mobile")

我的问题是为什么我必须输入"~/bundles/mobile"?有没有办法获得智能以获取强类型对象?否则我必须去查一下以确保我称它为同一个东西。

我想做这样的事情:(我知道这不会编译,这只是一个例子)

public static void RegisterBundles(BundleCollection bundles)
    {
    Bundle mobile = new Bundle("mobile");
    mobile.AddFile("w/e")
    bundles.Add(mobile);

//in page:
 @Scripts.Render(BundleConfig.mobile)

或有影响的东西。

编辑:答案很简单。正如所@Hao Kung指出的,@Styles.Render只需要一个 url 字符串路径。我创建了一个类来保存路径。

public class bundles
{
    #region Javascript
    public static string scripts = "~/bundles/scripts";
    ...
    #endregion

    #region CSS

    public static string css = "~/Content/css";
    public static string jqueryUi = "~/Content/themes/base/css";
    ...
    #endregion
}

在任何页面中,您只需执行

@Styles.Render(bundles.jqueryUi)

你有它。您需要付出一些额外的努力,但至少现在它是强类型的。

4

1 回答 1

2

Render Scripts/Styles Render helper 不限于渲染对包的引用,它们解析任何 url,因此帮助器检测您的意思是引用包的唯一方法是传入包的虚拟路径。

于 2012-06-20T22:10:19.983 回答