Я новичок в 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 - из другой таблицы. Не могли бы вы сообщить мне об ошибке, которую я делал, и как ее исправить?