protected virtual IDictionary<string, object> AddTemplateParameters(CodeType dbContextType, ModelMetadata modelMetadata)
{
if (dbContextType == null)
throw new ArgumentNullException(nameof (dbContextType));
if (modelMetadata == null)
throw new ArgumentNullException(nameof (modelMetadata));
if (string.IsNullOrEmpty(this.Model.ControllerName))
throw new InvalidOperationException(Microsoft.AspNet.Scaffolding.Mvc.Properties.Resources.InvalidControllerName);
IDictionary<string, object> dictionary = (IDictionary<string, object>) new Dictionary<string, object>((IEqualityComparer<string>) StringComparer.OrdinalIgnoreCase);
CodeType codeType = this.Model.ModelType.CodeType;
dictionary.Add("ModelMetadata", (object) modelMetadata);
string str = codeType.Namespace != null ? codeType.Namespace.FullName : string.Empty;
dictionary.Add("ModelTypeNamespace", (object) str);
HashSet<string> requiredNamespaces = this.GetRequiredNamespaces((IEnumerable<CodeType>) new List<CodeType>()
{
codeType,
dbContextType
});
dictionary.Add("RequiredNamespaces", (object) requiredNamespaces);
dictionary.Add("ModelTypeName", (object) codeType.Name);
dictionary.Add("ContextTypeName", (object) dbContextType.Name);
dictionary.Add("UseAsync", (object) this.Model.IsAsyncSelected);
string escapedIdentifier = ValidationUtil.GenerateCodeDomProvider(this.Model.ActiveProject.GetCodeLanguage()).CreateEscapedIdentifier(this.Model.ModelType.ShortTypeName.ToLowerInvariantFirstChar());
dictionary.Add("ModelVariable", (object) escapedIdentifier);
dictionary.Add("EntitySetVariable", (object) modelMetadata.EntitySetName.ToLowerInvariantFirstChar());
if (this.Model.IsViewGenerationSupported)
{
bool flag = OverpostingProtection.IsOverpostingProtectionRequired(codeType);
dictionary.Add("IsOverpostingProtectionRequired", (object) flag);
if (flag)
{
dictionary.Add("OverpostingWarningMessage", (object) OverpostingProtection.WarningMessage);
dictionary.Add("BindAttributeIncludeText", (object) OverpostingProtection.GetBindAttributeIncludeText(modelMetadata));
}
}
return dictionary;
}
私の解決策に。
ありがとうウェンディ、私が欲しいのは、ControllerNameの文字列、ControllerRootName、名前空間、AreaName、ContextTypeName、ModelTypeName ....などのそれぞれの値を設定することです。 –
サンプルコードでは、ITextTemplatingSessionHost.CreateSession()メソッドを使用しています。これは、キーと値のペアで値を渡すことができます。キー名をControllerName、ControllerRootName ...などに設定し、それぞれの値を設定することができます。 –
私は自分自身をよく説明していないと思う。私は値を渡す方法を知っています。私が望むのは、ControllerName、ControllerRootNameなどの値を取得することです(元の投稿のパラメータのリスト全体)。 –