예제 #1
0
        public void FillControlContext <TProperty>(IControlContext target, Expression <Func <TModel, TProperty> > expression)
        {
            var modelExplorer  = ExpressionMetadataProvider.FromLambdaExpression <TModel, TProperty>(expression, ViewData, MetadataProvider);
            var expressionName = ExpressionHelper.GetExpressionText(expression);
            var fullName       = ViewData.TemplateInfo.GetFullHtmlFieldName(expressionName);

            ModelStateEntry modelState;

            ViewContext.ViewData.ModelState.TryGetValue(fullName, out modelState);

            object value = null;

            if (modelState != null && modelState.RawValue != null)
            {
                value = modelState.RawValue;
            }
            else if (modelExplorer.Model != null)
            {
                value = modelExplorer.Model;
            }

            var errors = modelState == null || modelState.Errors == null
                ? null
                : modelState.Errors.Select(e => e.ErrorMessage).ToArray();

            target.FieldName  = fullName;
            target.IsRequired = modelExplorer.Metadata.IsRequired;
            target.FieldValue = value;
            target.Errors     = errors;
            target.HasErrors  = errors != null && errors.Length > 0;
            target.HasWarning = false;
        }
예제 #2
0
        protected override void WriteSelf(System.IO.TextWriter writer, IBootstrapContext context)
        {
            var formGroup = context.PeekNearest <FormGroup>();

            if (formGroup != null && controlContext == null)
            {
                controlContext = formGroup.ControlContextValue;
            }

            var input = context.CreateTagBuilder("p");

            input.AddCssClass("form-control-static");
            if (controlContext != null)
            {
                input.MergeAttribute("id", controlContext.Name);
                var value = controlContext.Value;
                if (value != null)
                {
                    input.SetInnerText(value.ToString());
                }
            }
            if (DisabledValue)
            {
                // nothing - already read-only :)
            }

            ApplyCss(input);
            ApplyAttributes(input);

            writer.Write(input.GetFullTag());
        }
예제 #3
0
 public void HostChildControl(IControlContext controlContext)
 {
     if (_hostedControlHandle != IntPtr.Zero)
     {
         CloseHandle(_hostedControlHandle);
     }
     _hostedControlHandle = controlContext.Handle;
     SetParent(_hostedControlHandle, this.Handle);
     MoveWindow(_hostedControlHandle, 0, 0, Width, Height, true);
 }
예제 #4
0
        public void FillControlContext <TProperty>(IControlContext target, Expression <Func <TModel, TProperty> > expression)
        {
            var        modelMetadata     = ModelMetadata.FromLambdaExpression <TModel, TProperty>(expression, ViewData);
            var        name              = ExpressionHelper.GetExpressionText(expression);
            var        fullHtmlFieldName = ViewData.TemplateInfo.GetFullHtmlFieldName(name);
            ModelState modelState;

            ViewData.ModelState.TryGetValue(fullHtmlFieldName, out modelState);
            var value = modelState == null || modelState.Value == null
                ? (modelMetadata.Model == null ? null : modelMetadata.Model)
                : modelState.Value.AttemptedValue;
            var errors = modelState == null || modelState.Errors == null
                ? null
                : modelState.Errors.Select(e => e.ErrorMessage).ToArray();

            target.FieldName  = fullHtmlFieldName;
            target.IsRequired = modelMetadata.IsRequired;
            target.FieldValue = value;
            target.Errors     = errors;
            target.HasErrors  = errors != null && errors.Length > 0;
            target.HasWarning = false;
        }
예제 #5
0
 public static IWriter <T> ControlContext <T>(this IWriter <T> target, IControlContext context)
     where T : IWritable, IControlContextHolder
 {
     target.Item.SetControlContext(context);
     return(target);
 }
예제 #6
0
 public static IWriter2 <T, TContent> ControlContext <T, TContent>(this IWriter2 <T, TContent> target, IControlContext context)
     where T : ContentElement <TContent>, IControlContextHolder
     where TContent : DisposableContent
 {
     target.Item.SetControlContext(context);
     return(target);
 }
예제 #7
0
 void IControlContextHolder.SetControlContext(IControlContext context)
 {
     ControlContextValue = context;
 }
예제 #8
0
 public void SetControlContext(IControlContext context)
 {
     this.ControlContextValue = context;
 }
예제 #9
0
 public void HostChildControl(IControlContext controlContext)
 {
     if (_hostedControlHandle != IntPtr.Zero)
     {
         CloseHandle(_hostedControlHandle);
     }
     _hostedControlHandle = controlContext.Handle;
     SetParent(_hostedControlHandle, this.Handle);
     MoveWindow(_hostedControlHandle, 0, 0, Width, Height, true);
 }
예제 #10
0
 void IControlContextHolder.SetControlContext(IControlContext context)
 {
     ControlContextValue = context;
 }
예제 #11
0
 public void SetControlContext(IControlContext context)
 {
     this.ControlContextValue = context;
 }