为什么它在我试图保存用户时抛出异常?

时间:2015-12-28 13:33:13

标签: asp.net-mvc-4

这与我以前的帖子有关,即使它是原始发布的,因为这篇帖子还有另一个问题,它已被回答。因此,为了避免复杂性,我决定用确认的单个错误重新发布它!

我有以下Create() post方法将用户保存到mst_users表。

    [HttpPost]
    public ActionResult Create(CustomerVM custObject)
    {

        if ( ModelState.IsValid )
        {
                mst_users user = new mst_users 
                { 
                    uName=custObject.User, 
                    password=custObject.Password, 
                    dtCreated=DateTime.UtcNow, 
                    isLocked=false
                };

                db.mst_users.Add(user);
                db.SaveChanges();
             }
        }
}

当方法在db.SaveChanges()执行时它会抛出错误对象没有设置对象的实例但是我已经初始化了表的所有必需字段但是它向我显示属于另一个集合的视图中的字段但它不是用户表here is the video

的一部分

这是user对象:

enter image description here

这是错误:

Object reference not set to an instance of an object.

错误来源

Line 44:         </div>
    Line 45:         <div class="editor-field">
    Line 46:             @Html.DropDownListFor(model => model.NameTitle, Model.NameTitleColl)
    Line 47:             @Html.ValidationMessageFor(model => model.NameTitle)
    Line 48:         </div>

这是堆栈:

[NullReferenceException: Object reference not set to an instance of an object.]
   ASP._Page_Views_Customer_Create_cshtml.Execute() in c:\aspmvc4-test\test1\test1\Views\Customer\Create.cshtml:46
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +197
   System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +96
   System.Web.WebPages.StartPage.RunPage() +17
   System.Web.WebPages.StartPage.ExecutePageHierarchy() +62
   System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76
   System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +259
   System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115
   System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +294
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
   System.Web.Mvc.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17() +23
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +242
   System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +21
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +175
   System.Web.Mvc.Async.<>c__DisplayClass2a.<BeginInvokeAction>b__20() +89
   System.Web.Mvc.Async.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) +102
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +57
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +43
   System.Web.Mvc.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) +14
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +57
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +47
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) +25
   System.Web.Mvc.Async.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) +23
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +47
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9651796
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155

2 个答案:

答案 0 :(得分:0)

尝试做这样的事情

mst_users user = new mst_users();
user.uName=custObject.User;
user.password=custObject.Password; 
user.dtCreated=DateTime.UtcNow;
user.isLocked=false;
db.mst_users.Add(user);
db.SaveChanges();

答案 1 :(得分:0)

问题解决了,即使我将db表dtUpdated标记为非null并使用getDate()分配我必须从客户端发送日期时抛出上述错误!