获取在Controller中动态添加的未排序列表列表项

时间:2018-08-06 14:06:10

标签: javascript arrays asp.net-mvc model-view-controller

我正在使用Razor视图进行项目(MVC)。

我试图通过单击按钮来动态填充列表(使用ul / li尝试,但select / option也可以)。用户正在填写一个字段,单击“添加”按钮,这会将其添加到ul / li结构中。

当我查看检查元素时,可以看到添加了值,我的问题是将它们存储到Session [“ ...”] ...或隐藏字段中,以便可以对其进行迭代在控制器动作中。

我从网上尝试了几个JS / Jquery答案,但是在我看来,这些答案都不起作用。

这是我填充ul / li结构的方式:

mongoengine.errors.InvalidQueryError: Querying the embedded document 'Comment' failed, due to an invalid query value

上面正确地用包含userinput值的列表项填充ul。

这是我的隐藏领域尝试:

function addPrice() {

    var priceValue = $("#PriceValue").val() // this is the input that users fill in

    var ul = document.getElementById("priceListBox");
    var li = document.createElement("li");

    li.setAttribute('class', "list-group-item list-group-item-action"); // set the class for design
    li.setAttribute('id', priceValue); // set the id to be able to remove
    li.appendChild(document.createTextNode(priceValue));

    ul.appendChild(li);

}

这是我预定义的ul:

<input type="hidden" name="PriceValues" value="" runat="server"/>

这是我尝试建立阵列并在控制器操作中访问以下值的最新尝试:

<ul class="list-group col-md-3" id="priceListBox" name="priceListBox" runat="server"> </ul>

我想知道:

  • 实现此目标的最佳方法是什么?
  • 最快的方法是什么?
  • 为什么当前尝试不起作用?

如果有任何问题,谢谢大家的答复,我将尽力正确答复。

亲切的问候。

2 个答案:

答案 0 :(得分:1)

也许,我错了,但是,您的输入隐藏了,具有“名称”属性而不是id?那么,您不应该分配一个ID而不是一个名称吗?

答案 1 :(得分:0)

因此,在大家的输入和几次尝试下,我成功地在控制器中获取了值。

@joseatchang,您完全正确,很高兴!感谢您指出这一点。 @Andreas,您也是正确的,有了警报,我可以看到它在“ var listItems ...”处停止运行,然后不再运行。我也无法使其正常工作,我也更改了getElementById语法,但是我无法使函数正常工作,但是我仍然想知道出什么问题了,所以如果您要详细说明,我将不胜感激。 @Scott Rickman,我尝试使用.textContent和其他方法进行几种方法,但是以下方法却很吸引人(也感谢拆分技巧;):

通过将其放置在我动态添加列表项的位置来工作: document.getElementById(“ PriceValues”)。value + = priceValue +“;”;

并在我的控制器中: var a = Request.Form [“ PriceValues”];

谢谢大家的帮助,我非常感谢! 祝您度过愉快的一周!