【发布时间】:2011-12-15 19:52:08
【问题描述】:
我为我的 Sitefinity 网站的后端设置了一个小部件,该小部件具有三个文本框和一个按钮。目标是在数据库中创建一个新列:
protected void btnAddClick(object sender, EventArgs e)
{
Type TelerikType = Type.GetType(txtTelType.Text);
Type ColumnType = Type.GetType(txtColType.Text);
string error = "";
if (TelerikType == null)
{
error = "Telerik Type is invalid";
}
if (ColumnType == null)
{
error = "Column Type is invalid";
}
if (error.Length == 0)
{
App.WorkWith()
.DynamicData()
.Type(TelerikType)
.Field()
.TryCreateNew(txtName.Text, ColumnType)
.SaveChanges(true);
error = "Added column successfully";
txtColType.Text = txtName.Text = txtTelType.Text = "";
}
literalErrorText.Text = string.Format(literalErrorText.Text, error);
}
我有两个问题:
当我在文本框中输入 Telerik.Sitefinity.Pages.Model.PageNode 时,Type.GetType(txtTelType.Text) 返回 null。
如果我用 typeof(PageNode) 替换该部分,我会得到“指定类型 'Telerik.Sitefinity.Pages.Model.PageNode' 不是动态类型。”
我希望有人能对为什么这些东西不能正常工作有所了解,或者可能是解决这个问题的更好方法?作为参考,我的目标(至少现在)是添加一个引用 PageNode 的动态列,以便我可以指定 ShowInLeftNavigation 布尔值和 ShowInRightNavigation 布尔值。感谢您提供任何帮助。
【问题讨论】:
-
问题 Telerik 是否控制您正在检查解析为字符串..?如果是这样,你可以做 if 语句 if (TelerikType == string.isEmptyOrNull) ..?
-
最好使用 Equals 关键字检查 Objects 并检查 int a= 5; b int = 6 如果您想检查值或值类型是否相等,请使用“==”
-
TelerikType 是 Type 类型。另外,如果我尝试将 .Equals 与空对象一起使用,我不会得到空引用异常吗?
-
对象如果未分配默认为空,因此进行空检查不会给出引用异常。通常如果您尝试访问对象而不初始化其属性或字段,或者如果您没有new 你可以做的对象 StringBuilder stb = default;在 .net 4.0 中,如果您调试并检查它的值,它将为 null .. 以及如果您检查例如 if(stb == null) 将返回 true。或对 .Equals 做同样的事情
标签: c# asp.net sitefinity-4