Castle.MonoRail.Framework.Helpers.FormHelper.AjaxFormTag C# (CSharp) Method

AjaxFormTag() public method

Generate Ajax form tag for ajax based form submission. Experimental.
public AjaxFormTag ( IDictionary parameters ) : string
parameters IDictionary
return string
		public string AjaxFormTag(IDictionary parameters)
		{
			currentFormId = CommonUtils.ObtainEntryAndRemove(parameters, "id", "form" + ++formCount);
			
			validationConfig = validatorProvider.CreateConfiguration(parameters);

			string afterFormTag = IsValidationEnabled ?
				validationConfig.CreateAfterFormOpened(currentFormId) :
				String.Empty;

			string url = UrlHelper.For(parameters);

			parameters["form"] = true;

			if (parameters.Contains("onsubmit"))
			{
				string onSubmitFunc = CommonUtils.ObtainEntryAndRemove(parameters, "onsubmit");
				//remove return to make it compatible for ajax condition
				if (onSubmitFunc.StartsWith("return ", StringComparison.InvariantCultureIgnoreCase))
				{
					onSubmitFunc = onSubmitFunc.Substring(7);
				}
				if (onSubmitFunc.EndsWith(";", StringComparison.InvariantCultureIgnoreCase))
				{
					onSubmitFunc = onSubmitFunc.Remove(onSubmitFunc.Length - 1);
				}
				string conditionFunc = CommonUtils.ObtainEntryAndRemove(parameters, "condition", string.Empty);
				if (!string.IsNullOrEmpty(conditionFunc))
				{
					conditionFunc += " && ";
				}
				conditionFunc += onSubmitFunc;
				
				parameters["condition"] = conditionFunc;
			}
			bool isMethodAssigned = parameters.Contains("method");

			string method = CommonUtils.ObtainEntryAndRemove(parameters, "method", "post");
			
			parameters["url"] = url;
			
			// reassign method so in case if there is no value the default is assigned.
			
			if (isMethodAssigned)
			{
				parameters["method"] = method;
			}

			String remoteFunc = new AjaxHelper().RemoteFunction(parameters);

			string formContent = String.Format("<form id='{1}' method='{2}' {3} onsubmit=\"{0}; return false;\" enctype=\"multipart/form-data\">", remoteFunc, currentFormId, method,GetAttributes(parameters));

			return formContent + afterFormTag;
		}