1

我是 asp.net mvc 的新手。我有参数 id 的索引方法:

 public ActionResult Index(int id)
    {

        var dc = new ServicesDataContext();
        var query = (from m in dc.Mapings
                   where m.CustomerID == id
                    select m);
       // var a = dc.Customers.First(m => m.CustomerId == id);
       // ViewData.Model = a;
       // return View();
        return View(query);
    }

现在,当我尝试从编辑重定向到索引时,出现错误“参数字典包含方法'System.Web.Mvc.ActionResult Index(Int32'的不可空类型'System.Int32'的参数'id'的空条目)' in 'MVCServices.Controllers.CustomerserviceController'。可选参数必须是引用类型、可空类型或声明为可选参数。

   [HttpPost]
    public ActionResult Edit( FormCollection form)
    {
        var id = Int32.Parse(form["CustomerServiceMappingID"]);

        var datacontext = new ServicesDataContext();
        var serviceToUpdate = datacontext.Mapings.First(m => m.CustomerServiceMappingID == id);
        TryUpdateModel(serviceToUpdate, new string[] { "CustomerID", "ServiceID", "Status" }, form.ToValueProvider());

        if (ModelState.IsValid)
        {
            try
            {
                var qw = (from m in datacontext.Mapings
                          where id == m.CustomerServiceMappingID
                          select m.CustomerID).First();
                datacontext.SubmitChanges();
                //return Redirect("/Customerservice/Index/qw");
                return RedirectToAction("Index", new { qw = qw });
            }
            catch{
                }
        }

        return View(serviceToUpdate);
    }

这是视图:

                 @Html.ActionLink("Back to List", "Index")

Index 方法中的 id 原来是从另一个控制器获取的 customerid,而 Edit 中的 id 来自另一个表。您能告诉我我一直在做的错误以及如何解决它吗?

4

1 回答 1

4

在操作中执行此Edit操作:

return RedirectToAction("Index", new { id = qw });
于 2011-06-09T03:32:40.280 回答