Добавление объекта опции в 2 окна выбора в javascript

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

. Я использовал Html.partial helper, дающий имя частичного просмотра и объект ModelType и экземпляр объекта ViewDataDictionary с префиксом поля Html для конструктора Html.partial.

Это приводит к запросу GET «xyz url» в «Main view» и отображению частичного представления внутри него с элементами ввода, сгенерированными с помощью префикса, например. ранее Name = «Title» теперь становится Name = «MySubType.Title» в соответствующем HTML-элементе и тем же для остальных элементов ввода формы.

Проблема возникла, когда запрос POST был сделан в «xyz url», ожидая, что заполненная форма будет сохранена в моей базе данных. Но MVC Modelbinder не привязывал мои данные модели POSTed с заполненными значениями форм, а также потерял ModelState. Модель в viewdata также достигла нулевого значения.

Наконец, я попытался обновить данные модели в форме «Отправлено», используя метод TryUppdateModel, который принимает экземпляр модели и html-префикс, который ранее был передан для частичного просмотра, и теперь можно увидеть модель привязан к значениям и состоянию модели.

Пожалуйста, дайте мне знать, подходит ли этот подход или бит разнообразен!

3
задан aliak 13 July 2018 в 19:34
поделиться

1 ответ

Вы создали один элемент, а затем пытаетесь вставить его в два разных места. Вы должны сделать два элемента, а затем вставить их оба.

#addNode {
  margin-left: 20px;
  width: 20%;
  height: 20px;
  font-weight: bold;
}

#deleteNode {
  margin-right: 20px;
  width: 20%;
  height: 20px;
  font-weight: bold;
}

#txtInput {
  width: 50%;
  height: 10px;
  float: left;
  padding: 10px;
}

#srcNodes {
  width: 40%;
  font-family: courier new;
  padding: 10px;
}

#targetNodes {
  width: 40%;
  font-family: courier new;
  padding: 10px;
}
<textarea id="addNodeInput" placeholder="Node Name"></textarea>
<button id="addNode" onclick="addNode();">Add</button>
<button id="deleteNode" onclick="deleteNode();">Delete</button>
<div id="nodeConsole"></div>

<select id="srcNodes" size="8"> </select>
<select id="targetNodes" size="8"> </select>

<script>
  var cmd = "";

  var inNode = document.getElementById("addNodeInput");
  var out = document.getElementById("nodeConsole");

  function display() {
    out.value = "Node Operations";
    out.innerHTML = cmd + out.innerHTML;
    cmd = "";
  }


  function addNode() {
    var n = inNode.value;
    cmd = ">>>" + n + "<br />";
    //display(cmd);
    inNode.value = "";
    inNode.focus();
    var s = document.getElementById("srcNodes");
    var t = document.getElementById("targetNodes");
    var option1 = document.createElement("option");
    var option2 = document.createElement("option");

    option1.text = n;
    option2.text = n;
    s.add(option1);
    t.add(option2);

  }
</script>

2
ответ дан Jordan S 17 August 2018 в 12:11
поделиться
  • 1
    Спасибо, @ Иордан. Просто подумал, но я подумал, есть ли другой способ заставить его работать. – aliak 13 July 2018 в 19:42
Другие вопросы по тегам:

Похожие вопросы: