C# 视图回发mvc4上的模型数据为空
我有一个razor视图,其中列出了多个项目。回发时,我希望从视图中获取模型,以便获取数据,但回发时,模型数据为null。我想知道如何在提交时从控制器中的视图获取数据。 这就是我所拥有的: 视图: 所以在HttpPost上,当我取回模型时,我有空值。如何在回发时获得正确的数据集 这是ItemsViewModel代码: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
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++;
}