Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# asp.net mvc jquery$.post列表<;字符串>;_C#_Jquery_Asp.net Mvc - Fatal编程技术网

C# asp.net mvc jquery$.post列表<;字符串>;

C# asp.net mvc jquery$.post列表<;字符串>;,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我正在使用以下帖子类型: <% using (Html.BeginForm()) { %> <%= Html.Hidden("EligiblePages", Model.EligiblePages) %> .... no elements in list appear $('.btnAction').click(function() { $.post("Home/AddProduct", $('form').serialize(

我正在使用以下帖子类型:

<% using (Html.BeginForm())
   { %>

<%= Html.Hidden("EligiblePages", Model.EligiblePages) %>

.... no elements in list appear

    $('.btnAction').click(function() {
            $.post("Home/AddProduct", $('form').serialize(), function(retval) { $('#addProductDialog').html(retval); });
    });


public class ProductViewModel
{
    public List<string> EligibleProducts { get; set; }
}


    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult AddProduct(string sender, ProductViewModel model)
    {
       ...
    }

.... 列表中不显示任何元素
$('.btnAction')。单击(函数(){
$.post(“Home/AddProduct”,$('form').serialize(),函数(retval){$('addProductDialog').html(retval);});
});
公共类ProductViewModel
{
公共列表EligibleProducts{get;set;}
}
[接受动词(HttpVerbs.Post)]
public ActionResult AddProduct(字符串发送者,ProductViewModel模型)
{
...
}
当我回到家时,我会更新这篇文章,并能给出一个更精确的例子

在发布的ViewModel中,我有一个
列表
作为隐藏的输入字段。由于某种原因,当post发生时,我检查了控制器post方法,该字段没有正确过来。有什么想法吗?

希望发布一个或多个表单元素以绑定到
列表
,其中每个表单元素的名称与ViewModel上列表属性的名称匹配。关于各种集合绑定方法

如果您将整个集合呈现在一个隐藏输入中,正如您在问题中所建议的那样,那么将发送到浏览器的将只是一个绑定到列表的值,而不是一个值集合。您可能希望枚举集合并在隐藏输入中呈现每个值。您还可以实现自己的模型绑定器来指定如何将发布的值绑定到ViewModel,尽管在这种情况下这可能有些过分

如果您使用HTTP调试代理工具,例如,您会看到为集合发布什么

将期望发布一个或多个表单元素以绑定到
列表
,其中每个表单元素的名称与ViewModel上列表属性的名称匹配。关于各种集合绑定方法

如果您将整个集合呈现在一个隐藏输入中,正如您在问题中所建议的那样,那么将发送到浏览器的将只是一个绑定到列表的值,而不是一个值集合。您可能希望枚举集合并在隐藏输入中呈现每个值。您还可以实现自己的模型绑定器来指定如何将发布的值绑定到ViewModel,尽管在这种情况下这可能有些过分


如果您使用HTTP调试代理工具,例如,您会看到为集合发布什么

根据您的视图模型,我希望您的表单元素如下所示:

<input type="hidden" name="EligibleProducts[0]" value="whatever" />
<input type="hidden" name="EligibleProducts[1]" value="whatever" />

等等


这就是默认的模型绑定器所期望的。

基于您的视图模型,我希望您的表单元素如下所示:

<input type="hidden" name="EligibleProducts[0]" value="whatever" />
<input type="hidden" name="EligibleProducts[1]" value="whatever" />
<%
for(int i=0;i<Model.EligiblePages.Count;i++)
    Html.HiddenFor(model=>model.EligiblePages[i]);
%>

等等

这就是默认模型绑定器所期望的。


<%
for(int i=0;i<Model.EligiblePages.Count;i++)
    Html.HiddenFor(model=>model.EligiblePages[i]);
%>
这将呈现隐藏的输入元素,并在调用控制器函数AddProduct时对模型进行适当的序列化



这将呈现隐藏的输入元素,并在调用控制器函数AddProduct时对模型进行适当的序列化

请包括视图和控制器其余部分的代码。如果看不到隐藏的值和控制器/视图模型代码,我们就无法真正告诉您发生了什么。表单在视图中的表示方式如何感谢大家的洞察力!请包括视图和控制器其余部分的代码。如果看不到隐藏的值和控制器/视图模型代码,我们就无法真正告诉您发生了什么。表单在视图中的表示方式如何感谢大家的洞察力!