c# - 在 asp.net mvc3 中使用复选框加上批量更新

标签 c# asp.net asp.net-mvc-3 entity-framework

目前我正在尝试基于一系列复选框创建批量更新。我似乎找不到使用 Entity Framework 的正确方法。

我将 ASP.Net 4 与 MVC3 和 Razor 结合使用。

这是我目前的代码。

查看页面(正常工作)

@model List<LeagueCounters.Models.champion>
<form name="setFree id="setFree" method="POST" action="/Champion/SetFree">
    @foreach (var item in Model)
    {
        if (item.isFree == true)
        {
           <input type="checkbox" id="@item.id" checked="checked" /> @Html.DisplayFor(modelItem => item.displayName)  
        }
        else
        {
            <input type="checkbox" id="@item.id" /> @Html.DisplayFor(modelItem => item.displayName)
        }
    }
<p><input type="submit" value="Save" /></p>

Controller (错误)

[HttpPost, Authorize(Roles = "Admin")]
public ActionResult SetFree(FormCollection fcMain)
{
     var sortedList = from c in _db.champions
                      orderby c.name
                      select c;
     int counter = 0;
     foreach (champion champ in sortedList)
     {
         if (fcMain[counter].Contains("true"))
            champ.isFree = true;
         else
            champ.isFree = false;

         _db.champions.Attach(champ);
         _db.ObjectStateManager.ChangeObjectState(champ, EntityState.Modified);

         counter++;
     }

     _db.SaveChanges();

     return View();
}

错误

索引超出范围。必须为非负数且小于集合的大小。 参数名称:索引

问题

我如何正确循环 Controller 中的复选框?一旦达到这一点,我的批量更新代码会起作用吗?

提前致谢。

最佳答案

这里的问题是只有选中的复选框才会发送到服务器。因此,您不能期望所有复选框键都出现在表单集合中。要解决此行为,Html.CheckBoxFor 创建一个带有复选框的附加隐藏字段,以便可以在服务器端读取结果。我不确定您将如何在此处使用强类型助手,因为您正在循环渲染数据。我想你可以看看这个 google search

关于c# - 在 asp.net mvc3 中使用复选框加上批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11519845/

相关文章:

C# 需要对新约束进行解释 (new T(...))

c# - 将具有配置文件的网站转换为 Web 应用程序项目

C# PredicateBuilder 实体 : The parameter 'f' was not bound in the specified LINQ to Entities query expression

asp.net - 如何使用 elmah 记录警告

.net - <%# %> 和 <%= %> 有什么区别?

asp.net-mvc - 在 Razor View 中启用和禁用文本框 (ASP.Net MVC 3)

c# - 如何在 asp.net 中存储用户数据?

Asp.net:实现自动注销功能

visual-studio-2010 - 创建一个包含 "everything"的网络应用安装包?

.net - 是否有比 ASP.NET 成员(member)提供程序更现代的成员(member)/安全实现