小编Con*_*ell的帖子

以编程方式呈现Web UserControl

我在他们自己的小项目中有大量的UserControl对象(ascx文件).然后我在两个项目中引用这个项目:REST API(这是一个类库项目)和主要网站.

我确信这在网站上很容易,只需Controls.Add在任何Panel或ASP.NET控件中使用都可以.

但是,API怎么样?有没有什么办法可以简单地通过了解控件的类型来呈现此控件的HTML?该RenderControl方法没有任何HTML写的作家作为对照的生命周期还没有开始.

请记住,我没有Web项目中的控件,所以我没有ascx文件的虚拟路径.所以LoadControl方法在这里不起作用.

所有控件实际上都来自相同的基本控件.我可以在这个基类中做些什么来允许我从一个全新的实例加载控件?

c# asp.net user-controls

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

处理将操作参数绑定到不正确类型的路由值时出现的错误

我在处理 ASP.NET WebAPI 中的所有类型的错误时遇到了麻烦。

我已经使用ExceptionFilter成功处理了操作方法中引发的异常,并成功处理了无效路由、无效控制器或操作名称的 404 错误。但是,我正在努力处理控制器和操作都找到的错误,但模型绑定的参数类型不正确。

这是我的操作,它被路由到/api/users/{id}.

[HttpGet]
public virtual TPoco Get(long id)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果我请求 URL /api/users/notinteger,我会收到一个400 Bad Request在代码之外处理的错误:

{
Message: "The request is invalid.",
MessageDetail: "The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int64' for method '___ Get(Int64)' in '___'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
}
Run Code Online (Sandbox Code Playgroud)

我如何拦截此错误并用我自己的错误消息进行响应?最好不在控制器本身,因为我想以相同的方式处理多个控制器。

我已经尝试根据这个问题 …

c# asp.net-mvc-4 asp.net-web-api

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

将IEnumerable <Derived>转换为IEnumerable <BaseClass>

我有一个类,我用它来枚举我的数据库中的列表.数据库中的所有表都有自己的类,它们都有自己的属性,它们都来自DatabaseTableRow.

public class DatabaseLinkRowsEnumerator<T> : IEnumerator<T>, IEnumerable<T> where T : DatabaseTableRow
Run Code Online (Sandbox Code Playgroud)

我有一个User类,它派生自Page,它派生自DatabaseTableRow.然后我有一个属性返回DatabaseLinkRowsEnumerator,一个用户列表.

我还有一个UI功能,可以显示水平列表中任何页面的列表,包括图像,名称和链接.

protected string GetVerticalListModuleHtml(IEnumerable<Page> pages)
Run Code Online (Sandbox Code Playgroud)

现在我想要做的就是将DatabaseLinkRowsEnumerator的值传递给这个函数.用户派生自Page,DatabaseLinkRowsEnumerator是IEnumerator.即使我尝试施放,我也会收到以下错误:

Unable to cast object of type 'Database.DatabaseLinkRowsEnumerator`1[Database.User]' to type 'System.Collections.Generic.IEnumerable`1[Database.Page]'.
Run Code Online (Sandbox Code Playgroud)

我正在使用ASP.NET 2.0.有没有人有任何想法如何投射/转换这个没有制作每个的完整副本?

c# generics inheritance casting .net-2.0

4
推荐指数
2
解决办法
4490
查看次数

为什么我不能在 C# 9 中定义顶级扩展方法?

我曾认为在 C# 9中使用顶级语句功能本质上是将顶级代码包装在通常的Program类和Main方法中。

反编译的顶级程序如下所示:

[CompilerGenerated]
internal static class $Program
{
    private static void $Main(string[] args)
    {
        // top-level code here
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以在顶层定义普通方法。它们被编译到Program类中,但在Main方法之外,也可以在其中定义扩展方法。

因为生成的Program类是静态的和非泛型的,我希望能够在顶层定义扩展方法。但是,我收到编译器错误CS1106: Extension method must be defined in a non-generic static class

VS Code 编译器错误 CS1106:必须在非泛型静态类中定义扩展方法

为什么是这样?

c# c#-9.0

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

银行是否将密码存储为纯文本?

我见过一些网站,尤其是银行网站,要求您输入此信息(例如)。有时他们会要求通过电话证明我的身份。

  • 密码的第二个字符
  • 密码的第 5 个字符
  • 密码的第 6 个字符

要做到这一点,散列算法不起作用,是吗?肯定应该像银行一样安全的东西有办法存储不可解密的密码吗?

database passwords password-storage

3
推荐指数
1
解决办法
1055
查看次数

我会用什么Enum?

我已经声明了一个枚举类型,为它分配了一个变量,现在我将它写入控制台.那么枚举类型在现实世界的应用程序中有什么用?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
   class Enum
{
    enum cars
    {
        Toyota, Nissan, Ferrari, Lamborghini
    }
}
class Program
{
    enum cars
    {
        Toyota, Nissan, Ferrari, Lamborghini
    }
    static void Main(string[] args)
    {
        int a = (int)cars.Ferrari;
        Console.WriteLine(a);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

c# enums

3
推荐指数
1
解决办法
1057
查看次数

EF执行SQL时调试断点

当使用SQL Server Profiler跟踪实体框架正在执行的SQL查询时,我看到一些不应该执行的查询,我无法确定哪部分代码是原因!

在Visual Studio Professional 2012中,有没有办法在执行任何SQL查询时将调试器设置为中断,所以我可以看到调用堆栈?

.net entity-framework visual-studio-2012 entity-framework-6

3
推荐指数
1
解决办法
194
查看次数

jquery是()来匹配所有元素,而不是任何元素

如果我有这个HTML:

<input type="button" />
<input type="button" />
<input class="btn" type="button" />
<div class="btn"></div>
<div class="btn"></div>
Run Code Online (Sandbox Code Playgroud)

我在jQuery对象中有3个按钮..说var buttons = $(':button');.

然后我有另一个具有不同3组元素的对象,其中一个元素是相同的: var nextButtons = $('.btn');

是否有jQuery方法检查所有元素是否相同?is()如果任何元素匹配,似乎返回true .

编辑:

我的意思是以完全相同的方式进行比较is().我想is(),对于第二组中的每一组,此函数将调用第一组中的每个元素.

jquery

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

检测文本溢出已经起作用并添加包含全文的工具提示

我有一个包含电子邮件地址的简单范围.

<span id="email">dave@davemail.dave</span>
Run Code Online (Sandbox Code Playgroud)

在我的CSS中,跨度设置为带有省略号溢出的固定宽度.

#email {
    display: inline-block;
    width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
}
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,我想检测它是否以某种方式工作并在span的title属性中显示全文.

我怎样才能做到这一点?纯CSS将是完美的,但如果这是不可能的,那么jQuery是下一个最好的东西.

html css jquery

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