【问题标题】:Syntax error in HAP SetAttributeValue or mistake in codeHAP SetAttributeValue 中的语法错误或代码中的错误
【发布时间】:2018-08-24 10:06:04
【问题描述】:
imgs = doc.DocumentNode.SelectNodes("//img");
HtmlNode img in imgs    

string imageIdString = image.Id.ToString();
img.SetAttributeValue("src", "/ImageBrowser/ImageById/" + imageIdString);

我得到了正确的 ID 值,但 img 源保持不变,我找不到原因

尝试像这里一样管理它: Need to replace an img src attrib with new value

Edit1:请求的代码

        string input = sectionEditModel.Content;
        string htmlstring = sectionEditModel.Content;
        string htmlstringdecoded = HttpUtility.HtmlDecode(htmlstring);
        HtmlDocument doc = new HtmlDocument();
        List<string> urls = new List<string>();
        DbImgBrowser.Models.Image image = null;
        doc.LoadHtml(htmlstringdecoded);
        var files = new FilesRepository();


        HtmlNodeCollection imgs = new HtmlNodeCollection(doc.DocumentNode);
        imgs = doc.DocumentNode.SelectNodes("//img");
        if (imgs != null && imgs.Count > 0)
            {

                foreach (HtmlNode img in imgs)
                {
                    HtmlAttribute srcs = img.Attributes[@"src"];
                    urls.Add(srcs.Value);
                    {

                        foreach (string Value in urls){

                            string AttrVal = img.GetAttributeValue("src", null);
                            if(AttrVal.Contains("base64"))
                            {
                                byte[] data = Convert.FromBase64String(Value.Substring(Value.IndexOf(",") + 1));

                                var pFolder = files.GetFolderByPath(string.Empty);
                                if (pFolder != null)
                                {
                                    image = new DbImgBrowser.Models.Image()
                                    {
                                        Name = Guid.NewGuid().ToString(),
                                        Folder = pFolder,
                                        Image1 = data
                                    };
                                    files.Db.Images.Add(image);
                                    files.Db.SaveChanges();

                                    string imageIdString = image.Id.ToString();
                                    img.SetAttributeValue("src", "/ImageBrowser/ImageById/" + imageIdString);

                                    files.Db.SaveChanges();
                                }
                            }

Edit2:示例路径:base64 示例图像之前 URL 示例路径 /ImageBrowser/Image?path=Test2.PNG

想要的结果 src="ImageBrowser/ImageById/"ID" (1-1000)

Edit3: 仍然所有 src 都没有改变

【问题讨论】:

  • 你能发布你的输入 html 是什么以及预期的输出应该是什么?
  • 输入来自 kendo ui 编辑器,包括两种图像,src=url by path 或 src=base64。我的代码捕获了这两种情况,将信息写入存储在 Db 中的字节数组中。在那里我得到了一个 ID (image.Id),我希望我可以将 src 信息替换为图像的链接。所以 src="ImageBrowser/ImageById/ + Db 中的图片数量。ID 很好,但是当我通过在浏览器中再次加载图片进行检查时,它仍然具有路径 src 的 base64/url。
  • 你能清理/发布更多代码吗? SetAttributeValue 用于更改所选节点的属性值,适用于我。
  • 贴出上述部分的全部代码。有什么问题会很有趣。
  • 您是否还可以包含几个示例图像路径 src 值来运行/逐步执行代码?

标签: c# syntax-error html-agility-pack


【解决方案1】:

答案很简单。 我在本地文档上,但我必须将其返回到内容并保存该部分

SectionsRepository.SaveSection(Section sec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多