小编The*_*iot的帖子

asp:用户控件中的Literal控件为null

我有一个包含asp:Literal的用户控件.

<div>
     <asp:Literal id="MenuContainer" runat="server" />
</div>
Run Code Online (Sandbox Code Playgroud)

代码隐藏页面中有一个初始化控件的方法:

internal void Setup(MyBusinessObject obj)
{
    MenuObject menu = MenuHelper.GetMenu(obj.State);

    if(obj == null)
        MenuContainer.Visible = false;

    //other code
}
Run Code Online (Sandbox Code Playgroud)

在使用控件的页面中,我在LoadComplete事件处理程序中调用控件的Setup方法(我在Load事件中首先调用它).无论MyBusinessObject为null还是非null,当我在用户控件上访问Literal时,我都会收到错误:

Object reference not set to an instance of an object.
Run Code Online (Sandbox Code Playgroud)

是什么原因以及对此有何补救措施?

c# asp.net user-controls

5
推荐指数
2
解决办法
6876
查看次数

允许服务器/用户控件上的任何属性/属性

我注意到在System.Web.UI.WebControls命名空间中的大多数(如果不是全部)标准Web控件上,您可以添加所需的任何属性而不会使页面崩溃.

以asp:Button控件为例.

此代码完全有效:

<form runat="server">
    <asp:Button runat="server" Text="Test button" crapAttribute="crapValue" />
</form>
Run Code Online (Sandbox Code Playgroud)

现在,我有一个自定义服务器控件,如果我添加任意属性,它会崩溃.它只接受定义了相应公共属性的属性.

我得到的错误是这样的"控件没有名为"crapAttribute"的公共属性.

我希望我的自定义控件接受任何属性而不会崩溃.我需要做些什么才能工作?

我看过Reflector中的标准控件,它们确实有各种各样的属性和东西,但是我看到的东西没有立即引起我的注意.

我的自定义控件继承自WebControl的价值.

asp.net user-controls properties servercontrol

5
推荐指数
1
解决办法
283
查看次数

被命名的索引器属性可能吗?

假设我在类中有一个数组或任何其他集合,以及一个返回它的属性,如下所示:

public class Foo
{
    public IList<Bar> Bars{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

现在,我可以这样写:

public Bar Bar[int index]
{
    get
    {
        //usual null and length check on Bars omitted for calarity
        return Bars[index];
    }
}
Run Code Online (Sandbox Code Playgroud)

c# properties indexed-properties

5
推荐指数
2
解决办法
3648
查看次数

刷新 ObjectListView 中唯一的对象

我使用ObjectListView。并使用方法 RefreshObject() 更新唯一修改的对象。

// The difference between associations and updatedAssociations is only in 
// one item, which ID field remains the same. 
// So i find an updated item by ID in the associations (before updating). 
//And say Object ListView to to refresh this item. 

var associationToUpdate = associations.References.Where(
        x => x.ID == associationIDToUpdate).FirstOrDefault();

olvAssociations.RefreshObject(associationToUpdate);

// And only after this set the model to updated model

associations = updatedAssociations;
Run Code Online (Sandbox Code Playgroud)

但什么也没有发生。有人知道这是怎么回事吗?

c# objectlistview

5
推荐指数
1
解决办法
4440
查看次数

如何将数据自动完成HTML属性添加到TextBoxFor HTML帮助器?

用于获取城市自动填充文本框的自动填充文本框.

我的代码看起来像这样,

<input id="location" type="text" name="q" 
data-autocomplete="@Url.Action("locationSearch", "Home", 
                       new { text = "location" })"/>
Run Code Online (Sandbox Code Playgroud)

现在我想将其转换为剃刀syntex.我尝试了这个,但没有工作.

@Html.TextBoxFor(model => model.Location, 
   new { data-autocomplete = Url.Action("locationSearch", "Home")})
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个?

autocomplete razor asp.net-mvc-3

5
推荐指数
2
解决办法
5971
查看次数

加载动态创建的ASCX控件(通过代码)

我正在Web User Controls通过代码创建(我的C#代码写出标记,代码隐藏和设计器文件在回调中写入磁盘).控件创建得很好.我可以将它们添加到我的web项目中并将它们放在页面上.

当我尝试使用LoadControl(path)它加载控件时说:

Unable to load type 'MyNameSpace.UseControlClass'
Run Code Online (Sandbox Code Playgroud)

这是因为尚未编译控件.

但我的要求是动态加载控件而不重新编译解决方案.

如何在创建控制文件时编译用户控件?因为这似乎是唯一的出路.

编辑: - 我的猜测是,由于文件尚未编译,因此不允许运行时加载.我试图使用CodeDom编译器编译代码文件.喜欢:

var filePath = Server.MapPath(path);
var provider = CSharpCodeProvider.CreateProvider("C#");
var opts = new CompilerParameters(new[] { "mscorlib.dll", "System.Web.dll", 
                              "Telerik.Web.Design.dll", "Telerik.Web.UI.dll", 
                              "Telerik.Web.UI.Skins.dll", "MyCurrentDll.dll"});
opts.GenerateExecutable = false;
opts.GenerateInMemory = true;
var cr = provider.CompileAssemblyFromFile(opts, new string[] { filePath+".cs" });
Run Code Online (Sandbox Code Playgroud)

但是,抱怨cannot find metadata file Telerik.Web.Design.dll等等.我不想硬编码Telerik的路径,因为它可能会在托管系统不同(虽然它是在bin当前Web应用程序).也是MyCurrentDll.dll我正在编译代码文件的文件的dll.我该如何解决这个问题?

我的想法是编译代码文件dll动态创建并将其复制到Web应用程序的bin目录.它可能会解决我最初提出的问题.

编辑2: - 在命中和试用后,我能够动态编译代码文件并生成dll.即使在生成dll并将其放入bin …

c# asp.net user-controls dynamic-compilation webusercontrol

5
推荐指数
1
解决办法
1334
查看次数

使用jQuery顺序加载和淡入元素

我正在研究一些代码,这些代码将按顺序加载一堆(20+)大图像(每个~500 KB).每个图像加载之后,它消失.我用这个小提琴这个讨论为起点.

我已经按照我想要的方式加载图像,但是我需要做其他一些事情而不会破坏这种顺序加载.我需要在第三个和第四个图像之间加载包含iframe的标记,我需要在图像之后加载一个链接.以下是我需要的标记输出示例:

<div id="container">
  <img src="img-1.jpg" />
  <img src="img-2.jpg" />
  <img src="img-3.jpg" />
  <div><iframe></iframe></div>
  <img src="img-4.jpg" />
  <img src="img-5.jpg" />
  <img src="img-6.jpg" />
  <img src="img-7.jpg" />
  <img src="img-8.jpg" />
  <img src="img-9.jpg" />
  <a href="/link/">Link text</a>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以很好地加载图像,但我仍然坚持如何只在前三个加载后加载iframe,然后加载其余的图像,然后链接.这是我目前的javascript:

var no = 22,
main = [],
i;

for (i = 1; i <= no; i++) {
    main[i] = "path/to/image/folder/img-" + i + ".jpg";
}

function loadImages(arr,loc) {
if (arr.length === 0) {
    return;
}

function imageLoaded(img) { …
Run Code Online (Sandbox Code Playgroud)

javascript jquery

5
推荐指数
1
解决办法
726
查看次数

是否有TextFormatFlags组合允许文本换行和结束省略号?

我无法将一些字符串渲染代码放在一起,这些代码可以为我提供所有目标.到目前为止,只能权衡利弊.

我正在拍摄一些行为与Windows7桌面快捷方式相同的方式,因为文本上方有一个图像,文本可以包装一次,任何更多的椭圆截断.

如:

在此输入图像描述

我使用TextRenderer.DrawText,我已经试过的各种组合TextFormatFlags,但我只能得到任何一个包装无限期文本,停在一个单一的线路之间,其省略号文本.

一些例子.提供给界限TextRenderer是,在所有情况下,的边界内ClipRectangle,其中我画的表面.它试图呈现的文本是"这是一个名为#1的组的相当长的名称.".

这段代码:

TextFormatFlags flags = TextFormatFlags.HorizontalCenter | 
     TextFormatFlags.NoPadding | TextFormatFlags.WordBreak | 
     TextFormatFlags.EndEllipsis;
Rectangle rect = new Rectangle(x, y, this.Width - 6, this.Height - y);
TextRenderer.DrawText(e.Graphics, _text, Font, rect, _textColor, flags);
Run Code Online (Sandbox Code Playgroud)

...产生这个:

在此输入图像描述

只需删除TextFormatFlags.WordBreak标志就会产生:

在此输入图像描述

我怎么能这样做,比如我尽可能在RectangleI pass 的范围内进行包装,然后在发生截断时结束椭圆?

c# text-rendering

5
推荐指数
1
解决办法
1488
查看次数

SyndicationFeed:内容为CDATA?

我正在使用.NET的SyndicationFeed来创建RSS和ATOM提要.不幸的是,我需要在描述元素(SyndicationItem的Content属性)中使用HTML内容,格式化程序会自动对HTML进行编码,但我宁愿将整个描述元素包装在CDATA中,而不对HTML进行编码.

我的(简单)代码:

var feed = new SyndicationFeed("Title", "Description", 
               new Uri("http://someuri.com"));
var items = new List<SyndicationItem>();

var item = new SyndicationItem("Item Title", (string)null, 
               new Uri("http://someitemuri.com"));

item.Content = SyndicationContent.CreateHtmlContent("<b>Item Content</b>");

items.Add(item);
feed.Items = items;
Run Code Online (Sandbox Code Playgroud)

有人知道如何使用SyndicationFeed做到这一点吗?我的最后一招是"手动"为feed创建XML,但我宁愿使用内置的SyndicationFeed.

asp.net rss syndication-feed syndication-item

4
推荐指数
1
解决办法
5543
查看次数

关闭对话框表单关闭父表单

我一直在处理奇怪的问题.我在一个项目中使用KryptonForm.我有一个表单(比如form1),我需要在这个表单的按钮上打开另一个表单.这是代码:

void btn_click(object sender, EventArgs e)
{
    Visible = false;
    ShowInTaskbar = false;

    var f = new Form2();
    f.ShowDialog();

    Visible = true;
    ShowInTaskbar = true;
}
Run Code Online (Sandbox Code Playgroud)

问题是,当Form2关闭时,它也会关闭Form1.我试过DialogResult = DialogResult.NoneForm2设置,但没有用.请帮我.

我一直在使用这种技术,这件事从未发生过.

.net c# krypton-toolkit winforms

4
推荐指数
1
解决办法
2528
查看次数