2011-06-09 65 views
1

我是新来的asp.net mvc。我有指数方法与参数ID:在asp.net mvc参数问题

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’空项。 Int32'为'MVCServices.Controllers.CustomerserviceController'中的方法'System.Web.Mvc.ActionResult Index(Int32)'。一个可选参数必须是引用类型,可为空类型或声明为可选参数

[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来自另一个table.Can请让我知道我一直在做的错误以及如何解决它?

回答

4

Edit行动做到这一点:

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

嘿。还有一件事是,我有一个链接,回到cshtml即视图...所以,你可以让我知道我怎么可以在控制器中使用相同的varibale – Sayamima 2011-06-09 03:37:12

+0

你试图传递给视图的变量?以及哪种行动方法? – 2011-06-09 03:39:02

+0

刚刚更新了上面的文本 – Sayamima 2011-06-09 03:41:11