Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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# 视图回发mvc4上的模型数据为空_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Razor - Fatal编程技术网

C# 视图回发mvc4上的模型数据为空

C# 视图回发mvc4上的模型数据为空,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我有一个razor视图,其中列出了多个项目。回发时,我希望从视图中获取模型,以便获取数据,但回发时,模型数据为null。我想知道如何在提交时从控制器中的视图获取数据。 这就是我所拥有的: 视图: 所以在HttpPost上,当我取回模型时,我有空值。如何在回发时获得正确的数据集 这是ItemsViewModel代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using

我有一个razor视图,其中列出了多个项目。回发时,我希望从视图中获取模型,以便获取数据,但回发时,模型数据为null。我想知道如何在提交时从控制器中的视图获取数据。 这就是我所拥有的:

视图:

所以在HttpPost上,当我取回模型时,我有空值。如何在回发时获得正确的数据集

这是ItemsViewModel代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Solution.Domain.Entities;

namespace Solution.Web.Models
{
    public class ItemsViewModel
    {
        public IEnumerable<Item> Items;
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用Solution.Domain.Entities;
命名空间解决方案.Web.Models
{
公共类ItemsViewModel
{
公共物品;
}
}

提前感谢您的每一条评论,这是因为标记的id/name属性,您希望将其序列化到模型实例。尝试将id更改为项目:

<span class="lead"><input type="checkbox" data-id="@p.Id" id="Items" checked="@p.Selected" value="@p.Id" />   @p.Quantity x @p.Name</span>  
@p.Quantity x@p.Name
我不知道输入是否代表您的项目,可能是您的整个部门:

<div class="well" id="Items">     
   <span class="pull-right label label-primary">@p.Price.ToString("c")</span>
   <span class="lead"><input type="checkbox" data-id="@p.Id" id="Model.Selected" checked="@p.Selected" value="@p.Id" />   @p.Quantity x @p.Name</span>         
</div>  

@p、 价格。ToString(“c”)
@p、 数量x@p.Name

为了将数据映射到操作参数,必须声明输入的名称。因此,改变你的观点如下:

@using (Html.BeginForm())
{
for (var i = 0; i < Model.Items.Count(); i++)
 {
       @{
          var p = Model.Items[i];
       }
       <div class="well">     
        <span class="pull-right label label-primary">@p.Price.ToString("c")</span>
        <span class="lead"> @Html.CheckBoxFor(m => Model.Items[i].Selected, new {"data-id" = p.Id })   @p.Quantity x @p.Name</span>         
    </div>     
 }   
    <div class="well">        
        <button type="submit" class="btn btn-lg btn-block btn-primary">Pay with Card</button>
        <button type="submit" class="btn btn-lg btn-block btn-primary">Pay with PayPal</button>
    </div>

}
@使用(Html.BeginForm())
{
对于(var i=0;iModel.Items[i]。选中,新建{“数据id”=p.id})@p.Quantity x@p.Name
}   
刷卡
用贝宝支付
}

让MVC生成一个带有控件
名称
属性的复选框,如
已选择[0],已选择[1]
。您需要使用内置的MVC助手类,如下所示

foreach (var p in Model.Items)
 {
       <div class="well">     
        <span class="pull-right label label-primary">@p.Price.ToString("c")</span>
        <span class="lead">
        @Html.CheckBoxFor(m=>m.Selected,{data_id=m.Id})
        @p.Quantity x @p.Name</span>         
    </div>     
 }   
foreach(Model.Items中的var p)
{
@p、 价格。ToString(“c”)
@CheckBoxFor(m=>m.Selected,{data\u id=m.id})
@p、 数量x@p.Name
}   
选项2:

 @counter=1;

 foreach (var p in Model.Items)
 {

       <div class="well">     
        <span class="pull-right label label-primary">@p.Price.ToString("c")</span>
        <span class="lead">
         <input type="checkbox" data-id="@p.Id" id="Model.Selected" 
         checked="@p.Selected" value="@p.Id" name="Selected[@counter]" />  
        @p.Quantity x @p.Name</span>         
    </div>     
    @counter++;
 }   
@计数器=1;
foreach(模型项中的var p)
{
@p、 价格。ToString(“c”)
@p、 数量x@p.Name
@计数器++;
}   
foreach (var p in Model.Items)
 {
       <div class="well">     
        <span class="pull-right label label-primary">@p.Price.ToString("c")</span>
        <span class="lead">
        @Html.CheckBoxFor(m=>m.Selected,{data_id=m.Id})
        @p.Quantity x @p.Name</span>         
    </div>     
 }   
 @counter=1;

 foreach (var p in Model.Items)
 {

       <div class="well">     
        <span class="pull-right label label-primary">@p.Price.ToString("c")</span>
        <span class="lead">
         <input type="checkbox" data-id="@p.Id" id="Model.Selected" 
         checked="@p.Selected" value="@p.Id" name="Selected[@counter]" />  
        @p.Quantity x @p.Name</span>         
    </div>     
    @counter++;
 }