将Umbraco表单提交到自定义数据源

时间:2016-10-11 12:54:56

标签: umbraco umbraco7 umbraco-forms

我试图将 Umbraco Forms (Umbraco v7.5.3)保存到我自己的数据源。 我遵循了这个指南:http://www.nibble.be/?p=84

它似乎有效。我可以连接并生成基于表格的表单。哪个好。

我的设置

  1. 我使用连接字符串添加新的表单数据源:

    Provider=SQLNCLI11;Server=(localdb)\MSSQLLocalDB;Database=test;Integrated Security=SSPI;
    
  2. 我的表格如下:

    table

    Id(PK)属性配置为标识

  3. 我选择了一些我想在表单中使用的字段:

    field selection

  4. 我选择应该使用的数据类型:

    field types

    我有点困惑为什么Id字段在那里。我没有选择它,我所遵循的指南也没有这个字段:/?

  5. 它为我生成了这个表单:

    generated form

  6. 错误

    但是当我尝试提交表单数据时,我收到以下错误。哪个不好。

      

    ' /'中的服务器错误应用

         

    对象引用未设置为对象的实例。

         

    描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

         

    异常详细信息:System.NullReferenceException:不是对象引用   设置为对象的实例。

         

    来源错误:

         

    执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

         

    堆栈追踪:

         

    [NullReferenceException:对象引用未设置为的实例   对象。]
      Umbraco.Forms.Core.Providers.DatasourceTypes.MsSql.InsertRecord(实录   记录)+1750
      Umbraco.Forms.Web.Services.RecordService.storeRecord(记录记录,   表格形式)+1574
      Umbraco.Forms.Web.Services.RecordService.Approve(记录记录,表格   form)+343 Umbraco.Forms.Web.Services.RecordService.Submit(Record   记录,表格形式)+565
      Umbraco.Forms.Web.Controllers.UmbracoFormsController.SubmitForm(表   form,FormViewModel模型,Dictionary 2 state, ControllerContext context) +2245
    Umbraco.Forms.Web.Controllers.UmbracoFormsController.GoForward(Form form, FormViewModel model, Dictionary
    2 state)+205
      Umbraco.Forms.Web.Controllers.UmbracoFormsController.HandleForm(FormViewModel   model,Boolean captchaIsValid)+785 lambda_method(Closure,   ControllerBase,Object [])+ 143 3   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase   controller,Object []参数)+14
      System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext   controllerContext,IDictionary 2 parameters) +157
    System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
    2   参数)+27
      System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult的   asyncResult,ActionInvocation innerInvokeState)+22
      System.Web.Mvc.Async.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) +29
    System.Web.Mvc.Async.WrappedAsyncResultBase
    1.End()+49
      System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult的   asyncResult)+32
      System.Web.Mvc.Async.AsyncInvocationWithFilters.b__3d()   +50 System.Web.Mvc.Async。<> c__DisplayClass46.b__3f()   +225 System.Web.Mvc.Async。<> c__DisplayClass46.b__3f()   +225 System.Web.Mvc.Async。<> c__DisplayClass46.b__3f()   +225 System.Web.Mvc.Async。<> c__DisplayClass46.b__3f()   +225 System.Web.Mvc.Async。<> c__DisplayClass46.b__3f()   +225 System.Web.Mvc.Async。<> c__DisplayClass33.b__32(IAsyncResult asyncResult)+10
      System.Web.Mvc.Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10
    System.Web.Mvc.Async.WrappedAsyncResultBase
    1.End()+49
      System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult的   asyncResult)+34
      System.Web.Mvc.Async<> c__DisplayClass2b.b__1c()   +26 System.Web.Mvc.Async。<> c__DisplayClass21.b__1e(IAsyncResult)   asyncResult)+100
      System.Web.Mvc.Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10
    System.Web.Mvc.Async.WrappedAsyncResultBase
    1.End()+49
      System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult的   asyncResult)+27
      System.Web.Mvc.Controller.b__1d(IAsyncResult的   asyncResult,ExecuteCoreState innerState)+13
      System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +29
    System.Web.Mvc.Async.WrappedAsyncResultBase
    1.End()+49
      System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)+36   System.Web.Mvc.Controller.b__15(IAsyncResult的   asyncResult,控制器控制器)+12
      System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +22
    System.Web.Mvc.Async.WrappedAsyncResultBase
    1.End()+49
      System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)+26
      System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult的   asyncResult)+10
      System.Web.Mvc.MvcHandler.b__5(IAsyncResult的   asyncResult,ProcessRequestState innerState)+21
      System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +29
    System.Web.Mvc.Async.WrappedAsyncResultBase
    1.End()+49
      System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)   +28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult)   结果)+9
      System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +9765121 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)+155

    问题

    • 为什么在我没有选择时,Id字段会添加到我的表单中?
    • 表单如何链接到我的表格?当我创建一个新表单时,我无法为它设置数据源,并且我在生成的表单上找不到指向我的数据源的任何配置。
      • 表单字段如何链接到表列?是通过"显示名称"?
    • 为什么我在尝试提交表单时会收到上述Null Reference

1 个答案:

答案 0 :(得分:1)

我能够通过升级Umbraco Forms的版本来解决问题。我想这是Umbraco v7.4.3和Umbraco Forms v4.3.2的已知问题,这是我正在使用的版本。

请参阅此问题报告:http://issues.umbraco.org/issue/CON-1188