1

大家!

我知道,这个问题可能被问了很多次,但无论如何..

问题是:

我有一个包含 2 个项目(C# 类库和 Web 项目)的解决方案。在类库项目中,我重写了一个文本框控件,因此它具有内置验证。在本地服务器上一切正常,但是当我上传已发布的项目时,问题就开始了。

这是代码:

    [Browsable(true)]
    [Category("Appearance")]
    [DefaultValue("~/images/alert.png")]
    public string AlertImageUrl
    {
        get
        {
            string path = HttpContext.Current.Server.MapPath("~/images/alert.png");
            return GetPropertyValue<string>("AlertImageUrl", path);
        }
        set
        {
            SetPropertyValue("AlertImageUrl", value);
        }
    }

    protected override void Render(HtmlTextWriter writer)
    {
        this.Attributes["onfocus"] = "var objs = this.parentNode.childNodes; for (var i = 0; i < objs.length; i++) {if (objs[i].id == 'imgAlert') { objs[i].style.display = 'none'; } }";
        writer.WriteFullBeginTag("span");
        base.Render(writer);
        if (!_validator.IsValid)
        {
            writer.WriteBeginTag("img");
            writer.WriteAttribute("id", "imgAlert");
            writer.WriteAttribute("runat", "server");
            writer.WriteAttribute("style", "left: -20px; top: 3px;");
            writer.WriteAttribute("src", AlertImageUrl);
            writer.WriteEndTag("img");
        }
        writer.WriteEndTag("span");
    }

图片位于 App_Themes/Theme_name/images/alert.png 如何正确获取 AlertImageUrl?奇怪,如果我手动设置它会返回正确的路径,但是 WriteAttribute - no..

任何帮助表示赞赏,问候, Maris

4

1 回答 1

2

使用ResolveClientUrl方法而不是Server.MapPath

于 2012-05-31T07:25:10.057 回答