日期:2014-05-18  浏览次数:20848 次

MVC删除 问题
大家帮看一下这样有什么 错,NewsInfoTable 是表。删除 的时候 就是能把数据 传到页面,但是点确定 删除 的时候 就不行,ID没有传得过去:
 
C# code
 public ActionResult Delete(int id)
        {
            myComputerDataContext db = new myComputerDataContext();
            var q = db.NewsInfoTable.First(o => o.NewsID == id);
            return View(q);
        }
        [HttpPost]
        //[AcceptVerbs(HttpVerbs.Delete)]
        public ActionResult Delete(NewsInfoTable n)
        {
            myComputerDataContext db = new myComputerDataContext();
            var a = db.NewsInfoTable.First(o => o.NewsID == n.NewsID);
            db.NewsInfoTable.DeleteOnSubmit(a);
            db.SubmitChanges();
            return RedirectToAction("NewsXinGai");
        }


错误提示 : var a = db.NewsInfoTable.First(o => o.NewsID == n.NewsID);
用户代码未处理 System.InvalidOperationException
  Message=序列不包含任何元素
  Source=System.Data.Linq
  StackTrace:
  在 System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
  在 System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
  在 System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
  在 System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
  在 System.Linq.Queryable.First[TSource](IQueryable`1 source, Expression`1 predicate)
  在 ComputerProduct.Controllers.NewsController.Delete(NewsInfoTable n) 位置 E:\MVC实训\ComputerProduct\ComputerProduct\Controllers\NewsController.cs:行号 97
  在 lambda_method(Closure , ControllerBase , Object[] )
  在 System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
  在 System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
  在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
  在 System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<InvokeActionMethodWithFilters>b__a()
  在 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
  InnerException: 


------解决方案--------------------
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Delete(string id)
{
var model = student.StudentInfo.First(c => c.StuId == id);
student.DeleteObject(model);
student.SaveChanges();
return RedirectToAction("Index");
}
楼主看一下这是我做的,StudentInfo是表。
id没传过来,你看看那个删除的链接是不是类似这个样子的:
@Html.ActionLink("删除", "Delete", new { id=item.StuId },new{onclick="return confirm('确定要删除吗');"})红字是提示你是否删除,其实你没必要写两个删除的Action,你删除还要像修改那样跳转页面吗???
一个Action足矣