参数字典包含参数' id'的空条目。非可空类型' Int32'方法'编辑(Int32)'

时间:2014-09-16 05:36:46

标签: asp.net-mvc asp.net-mvc-4

我正在使用linq to sql执行CRUD操作。但是当点击编辑,详细信息或删除它给我错误,即“参数字典包含非可空类型'System.Int32'参数'id'的空条目'方法'System.Web.Mvc.ActionResult编辑(Int32) ''in'CRUD_using_LinQ_to_SQL_in_MVC.Controllers.OTDController'。可选参数必须是引用类型,可空类型,或者声明为可选参数。“ 我检查了解决方案,发现在运行应用程序url时没有得到ID参数。但我不明白我的代码应该改变什么..你能不能帮助我......

我的控制器代码:

using System;

命名空间CRUD_using_LinQ_to_SQL_in_MVC.Controllers {     公共类OTDController:控制器     {

    private IOTddataRepository repository;
    public OTDController()
        : this(new OtdDataRepository())
    {
    }

    public OTDController(IOTddataRepository _repository)
    {
        repository = _repository;
    }


    //-----------------------Index--------------------------

    public ActionResult Index()
    {
        var otddata = repository.Getallotddata();
        return View(otddata);
    }


    //-----------------------Details--------------------------


    public ActionResult Details(int id)
    {
        OtdModelClass otdmodel = repository.Getotddatabysrno(id);
        return View(otdmodel);
    }


    //-----------------------Create--------------------------

    public ActionResult Create()
    {
        return View(new OtdModelClass());
    }

    [HttpPost]
    public ActionResult Create(OtdModelClass otdmodel)
    {
        try
        {
            if (ModelState.IsValid)
            {
                repository.Insertotddata(otdmodel);
                return RedirectToAction("Index");
            }
        }
        catch (DataException)
        {
            ModelState.AddModelError("", "Problem in Data Saving");
        }
        return View(otdmodel);
    }


    //-----------------------EDIT--------------------------

    public ActionResult Edit(int id)
    {
        OtdModelClass otdmodel = repository.Getotddatabysrno(id);
        return View(otdmodel);
    }

    [HttpPost]
    public ActionResult Edit(OtdModelClass otdclass)
    {
        try
        {
            if (ModelState.IsValid)
            {
                repository.Updateotddata(otdclass);
                return RedirectToAction("Index");
            }
        }
        catch (DataException)
        {
            ModelState.AddModelError("", "Problem in editing and Updating data");
        }
        return View(otdclass);
    }



    //-----------------------Delete--------------------------

    public ActionResult Delete(int id, bool? savechangeserror)
    {
        if (savechangeserror.GetValueOrDefault())
        {
            ViewBag.ErrorMessage = "Problem in Deleting";
        }

        OtdModelClass otdmodel = repository.Getotddatabysrno(id);
        return View(otdmodel);
    }

    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {
        try
        {
            OtdModelClass otdmodel = repository.Getotddatabysrno(id);
            repository.Deleteotddata(id);
        }
        catch (DataException)
        {
            return RedirectToAction("Delete", new System.Web.Routing.RouteValueDictionary { 
                                    {"id",id},
                                    {"SaveChangesError",true}});
        }
        return RedirectToAction("Index");
    }

}

}

我的OTD课程代码:

public class OtdDataRepository : IOTddataRepository
{
    private MVCLoginMasterLogDataClassesDataContext otdcontextobj;

    public OtdDataRepository()
    {
        otdcontextobj = new MVCLoginMasterLogDataClassesDataContext();
    }


    public IEnumerable<OtdModelClass> Getallotddata()
    {
        IList<OtdModelClass> otddatalist = new List<OtdModelClass>();
        var myselectallquery = from otduser in otdcontextobj.tbl_MVC_Login_Master_Logs select otduser;
        var otd = myselectallquery.ToList();
        foreach (var otddata in otd)
        {
            otddatalist.Add(new OtdModelClass()
            {
                Srno=Convert.ToInt32(otddata.Srno),
                MemberCode = otddata.MemberCode,
                LoginID = otddata.LoginID,
                OTDPassword = otddata.OTDPassword,
                BBSID = otddata.BBSID,
                IPAddress = otddata.IPAddress,
                ServerType = otddata.ServerType,
                OTDStatus = otddata.OTDStatus,
                RemoteIP = otddata.RemoteIP,
                RemotePort = otddata.RemotePort,
                AllowDownload = otddata.AllowDownload,
                OTDTimeStamp = otddata.OTDTimeStamp,
                MemberType = otddata.MemberType,
                EQ = otddata.EQ,
                EQD = otddata.EQD,
                BFX = otddata.BFX,
                SLB = otddata.SLB,
                Others = otddata.Others
            });
        }
        return otddatalist;
    }


    public OtdModelClass Getotddatabysrno(int id)
    {
        var getotddataquery = from otduser in otdcontextobj.tbl_MVC_Login_Master_Logs
                              where otduser.Srno == id
                              select otduser;
        var otddata = getotddataquery.FirstOrDefault();
        var otdmodel = new OtdModelClass()
        {
            Srno = Convert.ToInt32(otddata.Srno),
            MemberCode = otddata.MemberCode,
            LoginID = otddata.LoginID,
            OTDPassword = otddata.OTDPassword,
            BBSID = otddata.BBSID,
            IPAddress = otddata.IPAddress,
            ServerType = otddata.ServerType,
            OTDStatus = otddata.OTDStatus,
            RemoteIP = otddata.RemoteIP,
            RemotePort = otddata.RemotePort,
            AllowDownload = otddata.AllowDownload,
            OTDTimeStamp = otddata.OTDTimeStamp,
            MemberType = otddata.MemberType,
            EQ = otddata.EQ,
            EQD = otddata.EQD,
            BFX = otddata.BFX,
            SLB = otddata.SLB,
            Others = otddata.Others
        };
        return otdmodel;
    }

    public void Insertotddata(OtdModelClass otdmodel_obj)
    {
        var empdata = new tbl_MVC_Login_Master_Log()
        {
            Srno = Convert.ToInt32(otdmodel_obj.Srno),
            MemberCode = otdmodel_obj.MemberCode,
            LoginID = otdmodel_obj.LoginID,
            OTDPassword = otdmodel_obj.OTDPassword,
            BBSID = otdmodel_obj.BBSID,
            IPAddress = otdmodel_obj.IPAddress,
            ServerType = otdmodel_obj.ServerType,
            OTDStatus = otdmodel_obj.OTDStatus,
            RemoteIP = otdmodel_obj.RemoteIP,
            RemotePort = otdmodel_obj.RemotePort,
            AllowDownload = otdmodel_obj.AllowDownload,
            OTDTimeStamp = otdmodel_obj.OTDTimeStamp,
            MemberType = otdmodel_obj.MemberType,
            EQ = otdmodel_obj.EQ,
            EQD = otdmodel_obj.EQD,
            BFX = otdmodel_obj.BFX,
            SLB = otdmodel_obj.SLB,
            Others = otdmodel_obj.Others
        };

        otdcontextobj.tbl_MVC_Login_Master_Logs.InsertOnSubmit(empdata);
        otdcontextobj.SubmitChanges();
    }


    public void Deleteotddata(int id)
    {
        tbl_MVC_Login_Master_Log otd_deletelog = otdcontextobj.tbl_MVC_Login_Master_Logs.Where(otduser => otduser.Srno == id).SingleOrDefault();
        otdcontextobj.tbl_MVC_Login_Master_Logs.DeleteOnSubmit(otd_deletelog);
        otdcontextobj.SubmitChanges();
    }


    public void Updateotddata(OtdModelClass otdmodel_obj)
    {
        tbl_MVC_Login_Master_Log otd_updatelog = otdcontextobj.tbl_MVC_Login_Master_Logs.Where(otduser=>otduser.Srno==otdmodel_obj.Srno).SingleOrDefault();
        otd_updatelog.Srno = otdmodel_obj.Srno;
        otd_updatelog.MemberCode = otdmodel_obj.MemberCode;
        otd_updatelog.LoginID = otdmodel_obj.LoginID;
        otd_updatelog.OTDPassword = otdmodel_obj.OTDPassword;
        otd_updatelog.BBSID = otdmodel_obj.BBSID;
        otd_updatelog.IPAddress = otdmodel_obj.IPAddress;
        otd_updatelog.ServerType = otdmodel_obj.ServerType;
        otd_updatelog.OTDStatus = otdmodel_obj.OTDStatus;
        otd_updatelog.RemoteIP = otdmodel_obj.RemoteIP;
        otd_updatelog.RemotePort = otdmodel_obj.RemotePort;
        otd_updatelog.AllowDownload = otdmodel_obj.AllowDownload;
        otd_updatelog.OTDTimeStamp = otdmodel_obj.OTDTimeStamp;
        otd_updatelog.MemberType = otdmodel_obj.MemberType;
        otd_updatelog.EQ = otdmodel_obj.EQ;
        otd_updatelog.EQD = otdmodel_obj.EQD;
        otd_updatelog.BFX = otdmodel_obj.BFX;
        otd_updatelog.SLB = otdmodel_obj.SLB;
        otd_updatelog.Others = otdmodel_obj.Others;
        otdcontextobj.SubmitChanges();
    }
}

你能帮帮我吗......

1 个答案:

答案 0 :(得分:2)

框架告诉您,您点击以调用EditDelete操作方法的链接未提供操作方法期望的名为id的int参数找到提交数据中的某个位置。这通常在URL,查询字符串或提交的变量中提供。

如果这还不足以让您发现问题,请特别发布您的视图代码与链接相关的部分。