2016-07-14 3 views
5

BackgourndДобавление значения в список, который основан на модели

В настоящее время я пытаюсь добавить значение в список модели, однако это, кажется, отличается, как я хотел бы сделать это в JavaScript ,

Модель

public class ContentBase 
{ 

    public string Name { get; set; }  
    public string Description { get; set; } 
    public string LastModifiedTime { get; set; } 
    public string KeyWords { get; set; } 
    public string Content { get; set; } 
    public string UniqueId { get; set; } 
    public string library { get; set; } 
    public string ContentSummary { get; set; }   
    public string[] images { get; set; } 
} 

Функция Чтобы добавить значение

List<ContentBase> returnList = new List<ContentBase>(); 
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img")) 
    { 
    HtmlAttribute att = img.Attributes["src"]; 
    returnList.Add(images = att.Value); << this is wrong, just trying to give an idea of my intentions 
    } 

Вопрос

Я пытаюсь добавить результат из HtmlAttribute att = img.Attributes["src"]; в string[] images моей л ист. Таким образом, как только я закончу эту итерацию я буду в состоянии иметь все те ценности, которые я получаю от My для каждого цикла в string[] images частях моего списка

Update

Это предшествующая функция, заполняющей другие детали в моем списке

string content = ""; 
if (includeContent == true) 
{ 
    content = rslt[ContentBase.fastContent] != null ? rslt[ContentBase.fastContent].ToString() : ""; 
} 

returnList.Add(new ContentBase() 
{ 
    UniqueId = rslt[ContentBase.fasstUniqueId] != null ? rslt[ContentBase.fasstUniqueId].ToString() : "", 
    LastModifiedTime = rslt[ContentBase.fasstLastModifiedTime] != null ? rslt[ContentBase.fasstLastModifiedTime].ToString().Substring(0, 8) : "", 
    Name = rslt[ContentBase.fastName] != null ? rslt[ContentBase.fastName].ToString() : "", 
    Description = rslt[ContentBase.fastDescription] != null ? rslt[ContentBase.fastDescription].ToString() : "", 
    KeyWords = rslt[ContentBase.fastKeyWords] != null ? rslt[ContentBase.fastKeyWords].ToString() : "", 
    ContentSummary = rslt[ContentBase.fasstContentSummary] != null ? rslt[ContentBase.fasstContentSummary].ToString() : "", 
    Content = content, 

}); 
+0

Попытка добавить att.Value свойству изображения внутри возвращаемого списка –

+0

будет содержать список только один 'ContentBase' элемент, который вы установили его' images' недвижимость? –

+0

Был удален, да он будет содержать элементы, которые получены от моего для каждого цикла. Счетчик элементов будет динамическим, а не статическим. –

ответ

0

returnList является List<ContentBase>, так что вы должны добавить новый ContentBase к список.

Объект ContentBase содержит string[] images объект который вы можете создать в цикле или используя linq и передать его новому ContentBase созданным. Вы также должны указать значение других свойств созданного ContentBase. Например:

var returnList = new List<ContentBase>(); 
returnList.Add(new ContentBase() 
{ 
    // Initialize properties the same way you are setting them 
    // Including the images property this way: 
    images = htmlDocument.DocumentNode.SelectNodes("//img") 
         .Select(x=>x.Attributes["src"].Value).ToArray() 
}); 
1

Здесь returnList является Список ContentBase поэтому его элементы должны быть объектами соответствующего класса. Таким образом, код для добавления элементов к этому будет иметь следующий вид:

foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img")) 
    { 
    HtmlAttribute att = img.Attributes["src"]; 
    returnList.Add(new ContentBase(){library="some value",images = new string[]{att.value}} 
    } 
1

Вы можете просто создать ContentBase объект первым, а затем добавить его:

List<ContentBase> returnList = new List<ContentBase>(); 
foreach (HtmlNode img in htmlDocument.DocumentNode.SelectNodes("//img")) 
    { 
    HtmlAttribute att = img.Attributes["src"]; 
    ContentBase base = new ContentBase(); 
    base.image = att.value; 
    returnList.Add(base); 
    } 
+1

Я думаю, что 'base.image = att.value;' будет ошибочным, так как 'att.Value' будет строкой, а' base.image' будет строковым массивом –

1

Вы можете использовать Linq даже без использования foreach цикл, как это:

List<ContentBase> returnList = htmlDocument.DocumentNode.SelectNodes("//img") 
    .Select(img => new ContentBase {images = new[] {img.Attributes["src"].Value}}).ToList(); 

 Смежные вопросы

  • Нет связанных вопросов^_^