首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebResource.axd给出了404

WebResource.axd给出了404
EN

Stack Overflow用户
提问于 2011-03-02 08:03:36
回答 1查看 1.7K关注 0票数 2

我刚在代码项目上找到了文章,这让我很感兴趣.所以我在这里实现了这个:

我有两个项目:

  • MyComponent.Web (保存所有资源和控件)
  • MyComponent.Web.Demo (只有webProject)

MyComponent.Web我有

AssemblyInfo.cs

代码语言:javascript
复制
[assembly: WebResource(WebResourceHelper.JQueryPath, "text/javascript")]

WebResourceHelper.cs

代码语言:javascript
复制
public static class WebResourceHelper
{
    internal const string JQueryPath = "MyComponent.Web.WebResources.jQuery.jquery-1.5.1.min.js";

    public static void RegisterJQuery(this Page page)
    {
        page.RegisterWebResource(JQueryPath);
    }

    public static void RegisterWebResource(this Page page, string path)
    {
        Contract.Requires(page != null);
        Contract.Requires(!string.IsNullOrEmpty(path));

        var pageType = page.GetType();
        var webResourcePath = page.ClientScript.GetWebResourceUrl(pageType, path);
        page.ClientScript.RegisterClientScriptResource(pageType, webResourcePath);
    }
}

TextBox.cs

代码语言:javascript
复制
// namespace: MyComponent.Web.UI.WebControls
public sealed class TextBox : System.Web.UI.WebControls.TextBox
{
    #region life cycle

    protected override void OnInit(System.EventArgs e)
    {
        base.OnInit(e);

        this.Page.RegisterJQuery();
    }

    #endregion
}

另外,我的脚本文件将构建操作设置为Embedded Resource

MyComponent.Web.Demo我有

Default.aspx

代码语言:javascript
复制
<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <myComponent:TextBox runat="server" ID="textBox" />
    </div>
    </form>
</body>
</html>

web.config

代码语言:javascript
复制
<system.web>
    <pages>
        <controls>
            <add tagPrefix="myComponent" namespace="MyComponent.Web.UI.WebControls" assembly="MyComponent.Web" />
        </controls>
    </pages>
</system.web>

但是WebResource.axd给了我一个404,而Reflector向我展示了,我正确地嵌入了资源--那么我在这里做错了什么呢?

编辑你可以下载这里有个演示

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-02 08:50:19

最恶心的是这里的这个:

代码语言:javascript
复制
this.Page.RegisterJQuery();

代码语言:javascript
复制
var webResourcePath = page.ClientScript.GetWebResourceUrl(pageType, path);

page.ClientScript.GetWebResourceUrl()使用pageType的程序集来搜索资源。因为我已经将资源丢弃在另一个程序集中,所以它找不到它。

因此,解决办法是:

TextBox.cs

代码语言:javascript
复制
// namespace: MyComponent.Web.UI.WebControls
public sealed class TextBox : System.Web.UI.WebControls.TextBox
{
    #region life cycle

    protected override void OnInit(System.EventArgs e)
    {
        base.OnInit(e);

        this.RegisterJQuery();
    }

    #endregion
}

WebResourceHelper.cs

代码语言:javascript
复制
public static class WebResourceHelper
{
    internal const string JQueryPath = "MyComponent.Web.WebResources.jQuery.jquery-1.5.1.min.js";
    internal const string JQueryKey = "jQuery";
    private static readonly Type TypeOfWebResourceHelper = typeof (WebResourceHelper);

    public static void RegisterJQuery<TControl>(this TControl control)
        where TControl : Control
    {
        control.RegisterWebResource(JQueryKey, JQueryPath);
    }

    internal static void RegisterWebResource<TControl>(this TControl control, string key, string path)
        where TControl : Control
    {
        Contract.Requires(control != null);
        Contract.Requires(!string.IsNullOrEmpty(key));
        Contract.Requires(!string.IsNullOrEmpty(path));

        var page = control.Page;
        if (page.ClientScript.IsClientScriptIncludeRegistered(key))
        {
            return;
        }

        var webResourcePath = page.ClientScript.GetWebResourceUrl(TypeOfWebResourceHelper, path);
        page.ClientScript.RegisterClientScriptInclude(key, webResourcePath);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5164863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档