Nano Hash - криптовалюты, майнинг, программирование

Использование Razor для возврата строк в массиве

Я беру строку [] из своей модели, и в ней в любой момент времени содержится около 25 строк.

@model PostProcessPartSelectionViewModel

@{
    var i = 0;
    foreach (var part in Model.PartsAllowedAsSeed)
    {
        <input type="checkbox" id="[@i]" name="PartsAllowedAsSeed" value="@part" />
        <span>@part</span>
        <br />
        i++;
    }
}

Я установил цикл @foreach в Razor для отображения флажка и метки для каждой строки, но при отладке @part отображается в System.Object []. Есть 25 флажков с 25 метками «System.Object []».

В конце концов, я захочу вернуть все проверенные строки обратно в модель, но сейчас я просто хочу знать, как я могу заставить Razor отображать фактическое значение строки.


  • Значение элементов, найденных в свойстве PartsAllowedAsSeed, является массивом объектов, поэтому "System.Object[]" является фактическим строковым значением. Что вы пытаетесь сделать с объектами, найденными в этих массивах? 28.07.2014
  • Я должен был указать это в вопросе, но в System.Object [] есть строки внутри, но для моих нужд мне просто нужно закодировать каждый объект как одну строку. 28.07.2014
  • Так вы говорите, что первый part в PartsAllowedAsSeed будет что-то вроде {"a", "b", "c"}? В таком случае, какую строку вы хотите, чтобы она выводилась в вашем <span>? 29.07.2014

Ответы:


1

Не используйте foreach в бритве, используйте цикл for, чтобы вы могли напрямую привязаться к своей модели:

@for (int i = 0; i < @Model.PartsAllowedAsSeed.Length; i++)
{
    <input type="checkbox" id="[@i]" name="PartsAllowedAsSeed" />
    <span> @Model.PartsAllowedAsSeed[i] </span>
    <br />
}

что касается вашего System.Object[], вы можете сделать string.Join(", ", @Model.PartsAllowedAsSeed[i]) или что-то подобное в соответствии с вашими потребностями

28.07.2014
  • Я думаю, что в долгосрочной перспективе для меня гораздо лучше использовать for вместо foreach. Однако я не думаю, что string.Join поможет мне, поскольку он по-прежнему возвращает System.Object []. 28.07.2014

  • 2

    Мой случай был довольно конкретным, поэтому я не думаю, что это применимо к кому-либо. У меня был Object [] с объектами внутри, и я хотел отображать каждый дочерний объект в виде строки с помощью Razor. Я использовал хитрость, чтобы преобразовать Object [] в список, затем добавить скобки к каждой записи списка и передать каждую строку обратно в Razor. На данный момент мне не нужно напрямую связываться с моделью, поэтому я решил просто использовать foreach.

    Код бритвы:

    @{
        var i = 0;
        @foreach (var item in Model.PartsAllowedAsSeed)
        {
            <input type="checkbox" id="@i" name="PartsAllowedAsSeed" />
            <span>@Html.ConvertToArray(item)</span>
            <br />
            i++;
        }
    }
    

    Вспомогательный класс:

    public static MvcHtmlString ConvertToArray(this HtmlHelper htmlHelper, object source)
            {
                var src = source as IEnumerable;
    
                if (src == null) return MvcHtmlString.Create(string.Empty);
    
                var sourceAsList = src.Cast<Object>().ToList();
    
                var output = new StringBuilder();
                output.Append("[");
                for (var index = 0; index < sourceAsList.Count; index++)
                {
                    var item = sourceAsList[index];
                    output.Append(item);
                    if (index != (sourceAsList.Count - 1)) output.Append(", ");
                }
                output.Append("]");
    
                return MvcHtmlString.Create(output.ToString());
            }
    
    29.07.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..