The issues that I have encountered is that when designing a form in the backend through the Contour GUI, I can create fields with the same caption (this is desirous behavior), but if I create the same form in Visual Studio using codefirst design, when I try to view the form in the backend or frontend, the form explodes resulting in a
Exception Details: System.ArgumentException: An item with the same key has already been added.
and the following stack trace
[ArgumentException: An item with the same key has already been added.]
System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) +52
System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) +10695474
System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) +10
Umbraco.Forms.CodeFirst.FormManager.SynchronizeForm(Type typeForm) in c:\Program Files (x86)\teamcity\buildAgent\work\fdc2f0fcbbcef310\Umbraco.Forms.CodeFirst\FormBuilder\FormManager.cs:249
Umbraco.Forms.CodeFirst.FormManager.SynchronizeForms() in c:\Program Files (x86)\teamcity\buildAgent\work\fdc2f0fcbbcef310\Umbraco.Forms.CodeFirst\FormBuilder\FormManager.cs:201
Umbraco.Forms.CodeFirst.FormManager.Synchronize() in c:\Program Files (x86)\teamcity\buildAgent\work\fdc2f0fcbbcef310\Umbraco.Forms.CodeFirst\FormBuilder\FormManager.cs:24
Umbraco.Forms.CodeFirst.UmbracoManager.Synchronize() in c:\Program Files (x86)\teamcity\buildAgent\work\fdc2f0fcbbcef310\Umbraco.Forms.CodeFirst\UmbracoManager.cs:36
Umbraco.Forms.CodeFirst.UmbracoManager.SynchronizeIfNotSynchronized() in c:\Program Files (x86)\teamcity\buildAgent\work\fdc2f0fcbbcef310\Umbraco.Forms.CodeFirst\UmbracoManager.cs:21
Umbraco.Forms.CodeFirst.ContourFormBuilderHttpModule.context_BeginRequest(Object sender, EventArgs e) in c:\Program Files (x86)\teamcity\buildAgent\work\fdc2f0fcbbcef310\Umbraco.Forms.CodeFirst\ContourFormBuilderHttpModule.cs:27
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
I would like to be able to have fields with the same caption but designing forms in the GUI editor is tedious except for the most simple of cases. Any pointers would greatly appreciated!
Thanks for looking at this - I grabbed the zip and dropped the Umbraco.Forms.CodeFirst.dll into the bin but that still didn't seem to fix the issue - I notice the assembly version still says 3.0.17.0?
Hmm - still getting the error - if the below helps? Should the assembly version be 3.0.18? Still says 3.0.17 (although that might not be the issue)
Thanks
[ArgumentException: An item with the same key has already been added.]
System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) +14119204
Umbraco.Forms.CodeFirst.FormManager.SynchronizeForm(Type typeForm) in c:\Users\Timbo\Dropbox\Umbraco\Contour\Umbraco.Forms.CodeFirst\FormBuilder\FormManager.cs:333
Umbraco.Forms.CodeFirst.FormManager.SynchronizeForms() in c:\Users\Timbo\Dropbox\Umbraco\Contour\Umbraco.Forms.CodeFirst\FormBuilder\FormManager.cs:201
Umbraco.Forms.CodeFirst.FormManager.Synchronize() in c:\Users\Timbo\Dropbox\Umbraco\Contour\Umbraco.Forms.CodeFirst\FormBuilder\FormManager.cs:24
Umbraco.Forms.CodeFirst.UmbracoManager.Synchronize() in c:\Users\Timbo\Dropbox\Umbraco\Contour\Umbraco.Forms.CodeFirst\UmbracoManager.cs:36
Umbraco.Forms.CodeFirst.UmbracoManager.SynchronizeIfNotSynchronized() in c:\Users\Timbo\Dropbox\Umbraco\Contour\Umbraco.Forms.CodeFirst\UmbracoManager.cs:21
Umbraco.Forms.CodeFirst.ContourFormBuilderHttpModule.context_BeginRequest(Object sender, EventArgs e) in c:\Users\Timbo\Dropbox\Umbraco\Contour\Umbraco.Forms.CodeFirst\ContourFormBuilderHttpModule.cs:27
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
I have downloaded the nightly and this seems to work - gets rid of the error - but still not working as expected :(
It doesnt create the additional fields that have the same caption, not sure if that was expected or not. i.e. it creates the first field but any subsequent fields that have the same caption (in this case there are the same questions in multiple fieldsets) are not created.
I can leave this with you for a bit if you think there is a fix for it? If you can let me know so I can schedule work around it.
Thanks again - *sorry for causing you grief on a Friday morning! :)
Yeah will need some serious refactor in that case since a lot is based on the field caption, maybe if they are on a different fieldset... could you give that a try?
Thanks Tim - I will try the dictionary item suggestion - that should do as a workaround. The different fieldsets is still causing the same issue i'm afraid.
Duplicate field caption - not in codefirst forms
The issues that I have encountered is that when designing a form in the backend through the Contour GUI, I can create fields with the same caption (this is desirous behavior), but if I create the same form in Visual Studio using codefirst design, when I try to view the form in the backend or frontend, the form explodes resulting in a
Exception Details: System.ArgumentException: An item with the same key has already been added.
and the following stack trace
I would like to be able to have fields with the same caption but designing forms in the GUI editor is tedious except for the most simple of cases. Any pointers would greatly appreciated!
Umbraco: 6.1.3 --- Contour: 3.0.14
Cheers!
I am also having the same issues as outlined above - did anyone manage to solve this?
Thanks,
Kenny
Comment author was deleted
I'll test, mind posting the code for the form that is giving this error?
Hey Tim,
Thanks for the help -
[Form("Questionnaire", ShowValidationSummary = true, MessageOnSubmit = "Thank you for your submission.")]
public class QuestionnaireForm : FormBase
{
[Field(FormPages.Questionnaire, "Quality", Caption = "How is our performance?",
Type = typeof (RadioButtonList),
Prevalues = new[] {"1", "2", "3", "4", "5"},
Mandatory = true)]
public string PerformanceProductQuality { get; set; }
.....(other fields)
[Field(FormPages.Questionnaire, "Quality", Caption = "How is our performance?",
Type = typeof (RadioButtonList),
Prevalues = new[] {"1", "2", "3", "4", "5"},
Mandatory = true)]
public string PerformanceProductLabelling { get; set; }
}
It seems to be if the caption is the same, it throws the error - it works okay from back office.
Thanks,
Kenny
Comment author was deleted
Ok thanks will give it a test and will probably have a solution for you in the afternoon! stay tuned ;)
Comment author was deleted
Can confirm it's a bug but need some more testing before i can push a release, eta tomorrow morning, hope that's ok
That would be great Tim - thanks very much for looking at so quickly, much appreciated.
Kenny
Comment author was deleted
Finishing it first thing this morning so solution almost ready :)
Comment author was deleted
Aight fixed the error
But since in the code first a couple of things happen based on the caption it might not be that ideal to have duplicates :)
To upgrade just download http://nightly.umbraco.org/Umbraco%20Contour/3.0.18%20WIP/
The update zip UmbracoContour3.0.18 WIPupdate.zip
only thing you need when running on 3.0.17 is the codefirst assembly, drop that in your bin and the error should be gone
Hey Tim,
Thanks for looking at this - I grabbed the zip and dropped the Umbraco.Forms.CodeFirst.dll into the bin but that still didn't seem to fix the issue - I notice the assembly version still says 3.0.17.0?
Kenny
Comment author was deleted
Hmm can you try with these https://www.dropbox.com/s/qzn9kryermzpj3n/bin.zip
Hmm - still getting the error - if the below helps? Should the assembly version be 3.0.18? Still says 3.0.17 (although that might not be the issue)
Thanks
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +165
Comment author was deleted
Yeah haven't updated assembly version, but the stack trace helps, looking now :)
Comment author was deleted
Of seems you get an error I didn't get when testing but fixed now, please download the nightly again :)
Again it's just the code first stuff that needs to be updated
I have downloaded the nightly and this seems to work - gets rid of the error - but still not working as expected :(
It doesnt create the additional fields that have the same caption, not sure if that was expected or not. i.e. it creates the first field but any subsequent fields that have the same caption (in this case there are the same questions in multiple fieldsets) are not created.
I can leave this with you for a bit if you think there is a fix for it? If you can let me know so I can schedule work around it.
Thanks again - *sorry for causing you grief on a Friday morning! :)
Comment author was deleted
Yeah will need some serious refactor in that case since a lot is based on the field caption, maybe if they are on a different fieldset... could you give that a try?
Comment author was deleted
Or as a workaround use dictionary items and and populate them with the same value, that's the best I can think of atm
SO #quality1 #quality2 ... but all have the same value
Thanks Tim - I will try the dictionary item suggestion - that should do as a workaround. The different fieldsets is still causing the same issue i'm afraid.
Appreciate you looking into it for us,
Have a good one :)
Kenny
Comment author was deleted
Yeah the dictionary item workaround should do it then :)
I can confirm the dictionary items work just grand! Cheers!
(I also reverted my dlls back to the older version)
Comment author was deleted
Great :) hope that's a valid solution for the time being!
is working on a reply...