Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.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# 如何传递IEnumerable的数组<;int>;在ASP.NET MVC中从一个视图到另一个视图是否正确?_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 如何传递IEnumerable的数组<;int>;在ASP.NET MVC中从一个视图到另一个视图是否正确?

C# 如何传递IEnumerable的数组<;int>;在ASP.NET MVC中从一个视图到另一个视图是否正确?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,在下面的代码中,我创建了一个索引视图,允许用户检查他们想要更新的记录。当点击submit按钮时,它们应该被重定向到一个网页,需要执行一些代码来更新这些记录 以下是我已经实现的代码: 观点: @model IEnumerable<BulkDelete.Models.Employee> @{int[] employeesToUpdate;} <div style="font-family:Arial"> @using (Html.

在下面的代码中,我创建了一个索引视图,允许用户检查他们想要更新的记录。当点击submit按钮时,它们应该被重定向到一个网页,需要执行一些代码来更新这些记录

以下是我已经实现的代码:

观点:

@model IEnumerable<BulkDelete.Models.Employee>

@{int[] employeesToUpdate;}
    <div style="font-family:Arial">
        @using (Html.BeginForm("UpdateMultiple", "Home", FormMethod.Post))
        {
            <table class="table">
                <thead>
                    <tr>
                        <td>Checkbox<br /></td>

                        <th>Name</th>
                        <th>Gender</th>
                        <th>Email</th>
                    </tr>
                </thead>
                <tbody>

                    @foreach (var item in Model)
                    {
                        <tr>
                            <td>
                                <input type="checkbox" name="employeesToUpdate" id="employeesToUpdate" value="@item.ID" />
                            </td>
                            <td>@item.Name</td>
                            <td>@item.Gender</td>
                            <td>@item.Email</td>
                        </tr>
                    }
                </tbody>
            </table>

            <input type="submit"  value="update selected employees" />
        }
    </div>
@model IEnumerable
@{int[]employeesToUpdate;}
@使用(Html.BeginForm(“UpdateMultiple”,“Home”,FormMethod.Post))
{
复选框
名称 性别 电子邮件 @foreach(模型中的var项目) { @项目名称 @项目.性别 @邮件 } }
控制员:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Core.Objects;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BulkDelete.Models;

namespace BulkDelete.Controllers
{
    public class HomeController : Controller
    {
        SampleDBContext db = new SampleDBContext();
        public  System.Web.SessionState.HttpSessionState Session { get; }

        public ActionResult Index()
        {
            return View(db.Employees.ToList()) ;
        }

        [HttpPost]
        public ActionResult UpdateMultiple(IEnumerable<int> employeesToUpdate)
        {
            return RedirectToAction("UpdateMultipleRecords");
        }
        
        //[HttpPost]
        public ActionResult UpdateMultipleRecords()
        {
            IEnumerable<int> employeesToUpdate = (IEnumerable<int>)TempData["employeesToUpdate"];
            var listemployee = db.Employees.Where(x => employeesToUpdate.Contains(x.ID));

            foreach (var item in listemployee)
            {
                int itemid = item.ID;

                Employee e = db.Employees.Find(itemid);
                e.Email = "hello.";
                // e = db.Employees.Find(item);
                db.Entry(e).State = EntityState.Modified;
            }

            db.SaveChanges();

            return RedirectToAction("Index");
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Data.Entity;
使用System.Data.Entity.Core.Objects;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用BulkDelete.Models;
命名空间BulkDelete.Controllers
{
公共类HomeController:控制器
{
SampleDBContext db=新的SampleDBContext();
public System.Web.SessionState.HttpSessionState会话{get;}
公共行动结果索引()
{
返回视图(db.Employees.ToList());
}
[HttpPost]
公共操作结果更新多个(IEnumerable employeesToUpdate)
{
返回重定向操作(“UpdateMultipleRecords”);
}
//[HttpPost]
public ActionResult UpdateMultipleRecords()
{
IEnumerable employeesToUpdate=(IEnumerable)TempData[“employeesToUpdate”];
var listemployee=db.Employees.Where(x=>employeesToUpdate.Contains(x.ID));
foreach(listemployee中的var项)
{
int itemid=item.ID;
Employee e=db.Employees.Find(itemid);
e、 Email=“你好。”;
//e=db.Employees.Find(项目);
db.Entry(e).State=EntityState.Modified;
}
db.SaveChanges();
返回操作(“索引”);
}
}
}
我一次又一次地犯同样的错误:

无法创建“System.Collections.Generic.IEnumerable”1[[System.Int32,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]类型的空常量值

在此上下文中仅支持实体类型、枚举类型或基元类型

描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

异常详细信息:System.NotSupportedException:无法创建类型为“System.Collections.Generic.IEnumerable”1[[System.Int32,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]]的空常量值。”。 在此上下文中仅支持实体类型、枚举类型或基元类型


form post方法需要此签名,您似乎还依赖于RedirectToAction中的TempData,因此需要在post方法中设置TempData:

    [HttpPost]
    public ActionResult UpdateMultiple(IEnumerable<int> employeesToUpdate)
    {
        //Set the TempData
        TempData["employeesToUpdate"] = employeesToUpdate;
        return RedirectToAction("UpdateMultipleRecords");
    }

@for (var item in Model)
 {
    <tr>
        <td>
           @*index the controller parameter's IEnumerable*@
           <input type="checkbox" name="employeesToUpdate[@iter]" id="employeesToUpdate_@iter" value="@item.ID" /> 
        </td>
        <td>@item.Name</td>
        <td>@item.Gender</td>
        <td>@item.Email</td>
   </tr>
   iter++;
 }
@for(模型中的变量项)
{
@*索引控制器参数的IEnumerable*@
@项目名称
@项目.性别
@邮件
iter++;
}
@for (var item in Model)
 {
    <tr>
        <td>
           @*index the controller parameter's IEnumerable*@
           <input type="checkbox" name="employeesToUpdate[@iter]" id="employeesToUpdate_@iter" value="@item.ID" /> 
        </td>
        <td>@item.Name</td>
        <td>@item.Gender</td>
        <td>@item.Email</td>
   </tr>
   iter++;
 }