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

Как удалить двойные кавычки после отправки данных для просмотра с помощью ViewBag?

У меня есть отношения «многие ко многим» на странице редактирования, как я могу показать выбранные элементы, выбранные в раскрывающемся списке с множественным выбором

вот мой код:

        // GET: Project/Edit/5
    public ActionResult Edit(int? id)
    {
        if (id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        var edata = db.Projects.Find(id);
        //check if data
        if (edata == null)
            return HttpNotFound();

        //IEnumerable<SelectListItem> items = db.Provinces.Select(c => new SelectListItem { Value = c.ID.ToString(), Text = c.Name });
        //ViewBag.ProvinceId = items;

        //---Get all provice-----
        var Prov = from c in db.Provinces select c;
        //------get province ids---------------
        var prov_id = from o in db.ProRel where o.ProjectId == id select o.ProvinceIds;
        List<int> mid_list = new List<int>();
        foreach (var p_ids in prov_id)
        {
            mid_list.Add(p_ids);
        }
        var option_vals = "";
        var selected = string.Empty;
        foreach (var p_itmes in Prov)
        {
            if (mid_list.Contains(p_itmes.ID))
            {
                selected = "selected='selected'";
            }
            else
            {
                selected = "";
            }
            option_vals += "<option "+selected+" value="+p_itmes.ID+">"+p_itmes.Name+"</option>";
        }
        string test = option_vals.ToString();
        string test2 = test.Replace("\"", "");
        ViewBag.options = test2;
        return View(edata);
    }

в моем редактировании мой код:

      <div class="form-group">
        <label class="control-label col-md-2">Provinces</label>
        <div class="col-md-10">
            <select name="prov" id="prov">
                @ViewBag.options
            </select>
        </div>
    </div>

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

когда я проверяю элемент в браузере, параметры отображаются следующим образом:

"<option  value=1>Kabul</option><option selected='selected' value=2>Mazar</option><option selected='selected' value=3>Parwan</option><option  value=4>Herat</option><option  value=5>Badakhshan</option><option  value=6>Takhar</option><option  value=7>Smanagan</option><option selected='selected' value=8>Zabul</option>"

или вы предлагаете мне другой способ для этого я новичок в ASP.Net


  • Вы пропустили кавычки в атрибуте значения option_vals += "<option "+selected+" value=\""+p_itmes.ID+"\">"+p_itmes.Name+"</option>"; 27.11.2014
  • Все это можно сделать в 2 или 3 строки кода, используя модель представления и функции привязки модели MVC. 28.11.2014

Ответы:


1

Я согласен с ответом @ChrFin, но с некоторыми дополнительными деталями, которые, я надеюсь, решат вашу проблему.

     // GET: Project/Edit/5
    public ActionResult Edit(int? id)
    {
        if (id == null)
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        var edata = db.Projects.Find(id);
        //check if data
        if (edata == null)
            return HttpNotFound();

        //IEnumerable<SelectListItem> items = db.Provinces.Select(c => new SelectListItem { Value = c.ID.ToString(), Text = c.Name });
        //ViewBag.ProvinceId = items;

        //---Get all provice-----
        var Prov = from c in db.Provinces select c;
        //------get province ids---------------
        var prov_id = from o in db.ProRel where o.ProjectId == id select o.ProvinceIds;
        List<int> mid_list = new List<int>();
        foreach (var p_ids in prov_id)
        {
            mid_list.Add(p_ids);
        }

        var options = new List<SelectListItem>();
        foreach (var p_itmes in Prov)
        {
            var item = new SelectListItem();
            if (mid_list.Contains(p_itmes.ID))
                item.Selected = true;
            item.Value = p_itmes.ID.ToString();
            item.Text = p_itmes.Name;
            options.Add(item);
        }
        ViewBag.options = options;
        return View(edata);

    }

и внутри вашего представления добавьте следующий дополнительный атрибут:

    <div class="form-group">
        <label class="control-label col-md-2">Provinces</label>
        <div class="col-md-10">
            @Html.DropDownList("prov", (List<SelectListItem>)ViewBag.options, htmlAttributes: new { @class = "form-control", @multiple = "multiple" })
        </div>
    </div>
27.11.2014

2

Краткий ответ уже был дан Маркосом в его комментарии, но в целом это не то, как вы создаете тег select в MVC 5:

Контроллер:

public ActionResult Edit(int? id)
{
    // other code
    var options = new List<SelectListItem>();
    foreach (var p_itmes in Prov)
    {
        var item = new SelectListItem();
        if (mid_list.Contains(p_itmes.ID))
            item.Selected = true;
        item.Value = p_itmes.ID.ToString();
        item.Text = p_itmes.Name;
        options.Add(item);
    }
    ViewBag.options = options;
    return View(edata);
}

Вид:

<div class="form-group">
    <label class="control-label col-md-2">Provinces</label>
    <div class="col-md-10">
        @Html.DropDownList("prov", (List<SelectListItem>)ViewBag.options,
                           htmlAttributes: new { multiple = "multiple" })
    </div>
</div>
27.11.2014
  • Мой ASP.Net говорит: не имеет определения для «DropDownFor» и метода расширения «DropDownFor». 27.11.2014
  • @BenafshYalda: Моя ошибка (выдумал это) — см. мое обновление или msdn.microsoft.com/en-us/library/dd492738(v=vs.118).aspx 27.11.2014
  • не имеет применимого метода с именем «DropDownList», но, по-видимому, имеет метод расширения с таким именем. Методы расширения не могут быть отправлены динамически. Рассмотрите возможность приведения динамических аргументов или вызова метода расширения без синтаксиса метода расширения. 27.11.2014
  • Мой раскрывающийся список представляет собой раскрывающийся список с несколькими вариантами выбора. Я хочу, чтобы выбранные элементы отображались выбранными 27.11.2014
  • @BenafshYalda: Тогда вам нужно добавить атрибут multiple, как предложил Мехди... 27.11.2014
  • Спасибо за поддержку 27.11.2014
  • Новые материалы

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

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

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

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

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

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

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