проблема параметров в asp.net mvc - PullRequest
1 голос
/ 09 июня 2011

Я новичок в 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);
    }

Теперь, когда я пытаюсь перенаправить на индекс из редактирования, я получаю сообщение об ошибке «Словарь параметров содержит пустую запись для параметра« id »необнуляемого типа« System.Int32 »для метода« System.Web.Mvc.ActionResult » Index (Int32) 'в' 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 оказывается обычным, полученным из другого контроллера, в то время как идентификатор в Edit - из другой таблицы. Не могли бы вы сообщить мне об ошибке, которую я делал, и как ее исправить?

1 Ответ

4 голосов
/ 09 июня 2011

Сделайте это в действии Edit:

return RedirectToAction("Index", new { id = qw });
...