You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,68 @@
|
||||
namespace System.Web.DynamicData {
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.Hosting;
|
||||
|
||||
// This FieldTemplateFactory is used for the simple cases where the user doesn't have
|
||||
// a FieldTemplate directory but wants to get basic validation logic. In a sense
|
||||
// it is a smarter version of a BoundField
|
||||
internal class SimpleFieldTemplateFactory : FieldTemplateFactory {
|
||||
private static bool? _directoryExists;
|
||||
|
||||
public SimpleFieldTemplateFactory()
|
||||
: this(HostingEnvironment.VirtualPathProvider) {
|
||||
}
|
||||
|
||||
internal SimpleFieldTemplateFactory(VirtualPathProvider vpp)
|
||||
: base(vpp) {
|
||||
VirtualPathProvider = vpp;
|
||||
}
|
||||
|
||||
internal VirtualPathProvider VirtualPathProvider {
|
||||
get;
|
||||
set;
|
||||
}
|
||||
|
||||
protected virtual bool DirectoryExists {
|
||||
get {
|
||||
if (!_directoryExists.HasValue) {
|
||||
// This is expensive so cache it.
|
||||
_directoryExists = VirtualPathProvider.DirectoryExists(TemplateFolderVirtualPath);
|
||||
}
|
||||
return _directoryExists.Value;
|
||||
}
|
||||
}
|
||||
|
||||
public override IFieldTemplate CreateFieldTemplate(MetaColumn column, DataBoundControlMode mode, string uiHint) {
|
||||
// Call Preprocess mode so that we do set the right mode base on the the column's attributes
|
||||
mode = PreprocessMode(column, mode);
|
||||
bool readOnly = (mode == DataBoundControlMode.ReadOnly);
|
||||
// If the folder doesn't exist use the fallback
|
||||
if (!DirectoryExists) {
|
||||
return CreateFieldTemplate(readOnly, column);
|
||||
}
|
||||
|
||||
// Always see check if the base found anything first then fall back to the simple field template
|
||||
IFieldTemplate fieldTemplate = base.CreateFieldTemplate(column, mode, uiHint);
|
||||
|
||||
// If there was no field template found and the user specified a uiHint then use the default behavior
|
||||
if (!String.IsNullOrEmpty(uiHint)) {
|
||||
return fieldTemplate;
|
||||
}
|
||||
|
||||
return fieldTemplate ?? CreateFieldTemplate(readOnly, column);
|
||||
}
|
||||
|
||||
private IFieldTemplate CreateFieldTemplate(bool readOnly, MetaColumn column) {
|
||||
// By default we'll support checkbox fields for boolean and a textbox for
|
||||
// everything else
|
||||
if (column.ColumnType == typeof(bool)) {
|
||||
return SimpleFieldTemplateUserControl.CreateBooleanTemplate(readOnly);
|
||||
}
|
||||
return SimpleFieldTemplateUserControl.CreateTextTemplate(column, readOnly);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user