Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.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# 在复选框的值中使用模型的实例_C#_Asp.net Mvc - Fatal编程技术网

C# 在复选框的值中使用模型的实例

C# 在复选框的值中使用模型的实例,c#,asp.net-mvc,C#,Asp.net Mvc,我试图在复选框的value标记内使用object的实例,这似乎不起作用 我的视图代码: @using (@Html.BeginForm("Purchase", "Upload")) { foreach (var pic in Model) //pic is my class, Picture { <input type="checkbox" style="float: none" class="bootstrap-checkbox btn.btn-large

我试图在复选框的
value
标记内使用object的实例,这似乎不起作用

我的视图代码:

@using (@Html.BeginForm("Purchase", "Upload"))
{
    foreach (var pic in Model) //pic is my class, Picture
    {
        <input type="checkbox" style="float: none" class="bootstrap-checkbox btn.btn-large" value="@pic" name="purchasedItems">
    }

    <input type="submit"/>
}
@使用(@Html.BeginForm(“购买”、“上传”))
{
foreach(模型中的var pic)//pic是我的类,Picture
{
}
}
控制器代码:

[HttpPost]
public ActionResult Purchase(IEnumerable<Picture> purchasedItems)
{

    //My collection is empty here
}
[HttpPost]
公共行动结果购买(IEnumerable purchasedItems)
{
//我这里的藏品是空的
}
如果我使用
pic.Id
并接收一个整数数组而不是图片集合,那么一切都正常


使用Id而不是对象本身是更好的方法吗?还是应该使用object并以某种方式修复代码?

您可以使用表单集合从非标准控件检索值:

public ActionResult EditProgramTemplateLines(FormCollection formCollection)
{
        for(var i=0; i< chkArrayLength; i++)
        {
           var chkId = formCollection.GetValues(i); // [1,2,3,4]
           ...
        }
}
公共操作结果编辑程序模板行(FormCollection FormCollection) { 对于(var i=0;i您可以使用表单集合从非标准控件检索值:

public ActionResult EditProgramTemplateLines(FormCollection formCollection)
{
        for(var i=0; i< chkArrayLength; i++)
        {
           var chkId = formCollection.GetValues(i); // [1,2,3,4]
           ...
        }
}
公共操作结果编辑程序模板行(FormCollection FormCollection) { 对于(var i=0;i您可以使用

foreach (var pic in Model)
    {
        @Html.CheckboxFor(i => pic, new { @class = "bootstrap-checkbox btn.btn-large" });
    }
然后让控制器定期处理它。

您可以使用

foreach (var pic in Model)
    {
        @Html.CheckboxFor(i => pic, new { @class = "bootstrap-checkbox btn.btn-large" });
    }

然后让控制器定期处理它。

是的,最好发送ID列表,而不是对象本身的列表,原因有两个:

  • 传递给服务器/显示给客户端的数据越少,节省的带宽就越多
  • 您不想从客户那里获取产品的全部数据,我可以使用小提琴手之类的工具轻松控制您收到的数据,并更改产品的价格,例如,因此无论哪种方式,您都需要使用产品Id从数据库中再次检索产品数据(出于安全原因),那么,为什么要传递整个对象数据呢

  • 是的,发送ID列表而不是对象本身的列表更好,主要原因有两个:

  • 传递给服务器/显示给客户端的数据越少,节省的带宽就越多
  • 您不想从客户那里获取产品的全部数据,我可以使用小提琴手之类的工具轻松控制您收到的数据,并更改产品的价格,例如,因此无论哪种方式,您都需要使用产品Id从数据库中再次检索产品数据(出于安全原因),那么,为什么要传递整个对象数据呢

  • 部分(i=>pic)不起作用,因为pic类型不同于model@Anarion这两个模型有什么不同?视图的模型是List,pic是的实例Picture@Anarion因此,模型是
    List
    ,控制器接受
    IEnumerable
    ?我想我会同意@jony89的答案。谢谢。这个部分(i=>pic)不起作用,因为pic类型不同于model@Anarion这两个模型有什么不同?视图的模型是List,pic是的实例Picture@Anarion因此,模型是
    List
    ,控制器接受
    IEnumerable
    ?我想我会同意@jony89的答案。谢谢。我得到的是字符串数组而不是对象数组。@Anarion得到字符串数组是有意义的,因为你不是真正绑定任何东西,而是在集合中循环。我得到的是字符串数组而不是对象数组。@Anarion得到字符串数组是有意义的,因为你不是真正绑定对象绑定任何内容,但不在集合中循环。