【发布时间】: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