小编Sco*_*lby的帖子

使用界面时出现vb.net错误

我收到了这个错误

"错误19类'LegacyRouteHandler'必须实现'Function GetHttpHandler(requestContext As RequestContext)作为IHttpHandler'用于接口'System.Web.Routing.IRouteHandler'."

从这段代码:

Public Class LegacyRouteHandler
    Implements IRouteHandler
    Public Function GetHttpHandler(requestContext As RequestContext) As IHttpHandler
        Return New LegacyHandler(requestContext)
    End Function
End Class
Run Code Online (Sandbox Code Playgroud)

我正在明确实施GetHttpHandler,为什么我收到此错误的任何想法?

.net vb.net asp.net-mvc interface

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

实现依赖注入静态方法

在我试图更新的旧代码中,他们实现了依赖注入,如下所示:

public class Program
{
    private IProgramRepository programRepository;

     public Program(IProgramRepository repository)
        {
             this.programRepository = repository;
        }

     public Program() : this(new EN_Program()) { }
Run Code Online (Sandbox Code Playgroud)

现在在这个程序类中所有的方法都是静态的,所以所有的静态方法实际上都有2个这样的方法:

    public static List<Program> GetProgramsByUser(int userId)
    {
        return GetProgramsByUser(userId, GetDefaultRepository());
    }
    private static List<Program> GetProgramsByUser(int userId, IProgramRepository repo)
    {
        return repo.GetProgramsByUser(userId);
    }
Run Code Online (Sandbox Code Playgroud)

现在我已经阅读了关于实现DI的其他内容:

这根本不是依赖注入.这实际上明显违反了依赖倒置原则.原则上说"高级模块不应该依赖于低级模块,两者都应该依赖于抽象.细节应该取决于抽象".在上面的代码中,Product.cs本身创建了EN_Program对象.所以它直接依赖于IProgramRepository实现(EN_Program).如果将来另一个实现来自IProgramRepository接口,那么Product.cs代码本身需要更改.因此,有人探讨这不是正确的方法.

看起来旧的开发人员想要从帮助程序类(Program.cs)开始实现DI而没有注入控制器.

假设这个旧代码编写不正确,我是否正确?实施DI时是否有必要从控制器到后端的所有内容都有注射?

恩.控制器需要注入一个辅助类使用的接口(Program.cs) - 然后Program.cs注入一个存储库使用的接口

c# asp.net-mvc dependency-injection

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

搜索列表<string>表示字符串.StartsWith()

我有一个

List<string>
Run Code Online (Sandbox Code Playgroud)

有1500个字符串.我现在使用以下代码仅提取以字符串prefixText开头的字符串.

foreach(string a in <MYLIST>)
{            
    if(a.StartsWith(prefixText, true, null))
    {
        newlist.Add(a);                   
    }            
}
Run Code Online (Sandbox Code Playgroud)

这很快,但我正在寻找谷歌快速.现在我的问题是,如果我按字母顺序排列List,然后比较char by char我可以加快速度吗?或者其他任何有关加快速度的建议?

c# string performance list

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

VB.Net IIf函数在添加SqlParameter时

我正在重写这个长INSERT语句和参数,看起来像这样:

    cmd.Parameters.AddWithValue("@Website", General.fnSQLNullValues(tWebsite.Text))
Run Code Online (Sandbox Code Playgroud)

其中General.fnSQLNullValues是这样的:

        Public Shared Function fnSQLNullValues(ByVal sValue As Object, Optional ByVal Len As Integer = 999999) As Object
            If sValue Is Nothing Then Return DBNull.Value
            fnSQLNullValues = IIf(sValue.ToString.Length = 0, DBNull.Value, Left(sValue.ToString(), Len))
        End Function
Run Code Online (Sandbox Code Playgroud)

我根本不喜欢这个,似乎很多代码都是这样做的,

       cmd.Parameters.AddWithValue("@Website" , If(tWebsite.Text , DBNull.Value))
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果tWebsite.Text为null或未被接受,则DBNull.Value中的一行代码将替换tWebsite.Text作为值,在我看来,它与General中的其他函数做同样的事情.这是正确的,是一种比另一种更好的方式吗?

此外,我从第二种方式得到警告:"不能推断常见类型;对象假设",但在我看来,第一种方式是使用通用对象,所以我不知道我是否应该忽略这个警告

vb.net asp.net sqlparameter

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

在VB.Net中将字符串转换为Guid

我有Guid"UserID",它需要填充Session("UserID"),这是一个String,但格式化为完美转换为Guid.

如果我试试这个,"无法将类型字符串转换为类型Guid"

       Dim UserID As New Guid()
       If HttpContext.Current.Session("UserID") IsNot Nothing Then
          UserID = HttpContext.Current.Session("UserID")
       End If
Run Code Online (Sandbox Code Playgroud)

如果我尝试这个"无法将类型字符串转换为类型Guid"

       Dim UserID As New Guid()
       If HttpContext.Current.Session("UserID") IsNot Nothing Then
          UserID = DirectCast(HttpContext.Current.Session("UserID"), Guid)
       End If
Run Code Online (Sandbox Code Playgroud)

这会将字符串完美地转换为Guid,但它不能在If语句之外访问

       If HttpContext.Current.Session("UserID") IsNot Nothing Then
         Dim UserID As new Guid(HttpContext.Current.Session("UserID"))
       End If
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何在If语句之外定义UserID,然后有条件地分配它

vb.net asp.net casting guid

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

VB.Net Lambda查询

我知道我可以改变这样的查询

Dim myList As List(Of Tickets) = (From a In db.myTable
                  Where a.ID = id AndAlso a.IsOnline = True).ToList
Run Code Online (Sandbox Code Playgroud)

到lambda

Dim myList as List(of Tickets) = db.Where(Function(x) x.ID = id ANDAlso a.IsOnline = true).ToList
Run Code Online (Sandbox Code Playgroud)

我如何编写lambda版本并告诉它用结果创建一个新对象?像这样:

Dim myList As List(Of Tickets) = (From a In db.myTable
                             Where a.ID = id AndAlso a.IsOnline = True
                             Select New TicketType With {
                                       .Id = a.rsID.ToString,
                                       .Title = a.rsTitle}).ToList
Run Code Online (Sandbox Code Playgroud)

.net linq vb.net lambda

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

kendo UI网格数据源asp webforms

所以我按照Kendo提供的示例使用外部数据源,出于某种原因,当你输入Default.aspx/GetEvents的URL(其中GetEvents是Default.aspx中的web方法)时,它返回Default.aspx的整个HTML而不是只是在正常的AJAX调用中调用webmethod.

所以我找到了解决方法,我使用本地数据源方法,它调用javascript函数 - 这个javascript函数在default.aspx中对我的webmethod进行自己的ajax调用并得到一个成功的响应

所以这是我的代码

 $(document).ready(function () {
                $("#grid").kendoGrid({
                    dataSource: {
                        data: createRandomData(),
                        schema: {
                            data: "d"
                        },
                        pageSize: 10
                    },
                    height: 250,
                    scrollable: true,
                    sortable: true,
                    filterable: true,
                    pageable: {
                        input: true,
                        numeric: false
                    },
                    columns: [
                        {
                            field: "Title",
                            title: "Title",
                            width: 100
                        },
                        {
                            field: "StartDate",
                            title: "StartDate",
                            width: 100
                        },
                        {
                            field: "Keywords",
                            width: 100
                        }
                    ]
                });
            });
Run Code Online (Sandbox Code Playgroud)

这是createRandomData()返回的开始 - 它是有效的json - 我只是不想粘贴它并使这个问题不可读

"d" : [
{
    "Title": "Chicago BlackHawks vs. Detroit Redwings", …
Run Code Online (Sandbox Code Playgroud)

c# asp.net ajax jquery kendo-ui

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

Jquery自动完成.NET WebMethod

我使用HttpHandler - .ashx文件进行Jquery自动完成.它工作正常,我想知道是否有一种简单的方法在后面的代码中使用[WebMethod]权限自动完成 - 这有什么优势吗?

c# asp.net jquery

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

使if语句更简单

只是一个基本的if陈述,试图让它更简单,更容易阅读.现在它的内容如下:

  if ( myid == 1 || myid ==2 || myid == 10 || myid == 11 || myid == 12 || myid == 13 || myid ==14 || myid ==15)
  {
    ...
  }
Run Code Online (Sandbox Code Playgroud)

int[] ints = [1,2,10,11,12,13,14,15]那时我正在想类似的东西

  if (ints.Contains(myid))
  {
  }
Run Code Online (Sandbox Code Playgroud)

我实际上并不知道这是否真的更容易阅读,它肯定更短,两者的性能差异可能微不足道.

.net c#

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

对于未经身份验证的重定向到URL而不是401

我正在使用ASP.Net 5 MVC 6和JWT令牌,这些令牌是在用户位于该站点的子域的另一个站点上创建的.我的目标是将令牌与请求一起传递给此子域.如果用户碰巧尝试在没有标题中的正确令牌的情况下来到此子域名网址,那么我想将它们重定向到主站点登录页面.

在对最新的RC-1版本感到非常沮丧并且使用JWT代币SecureKey而不是证书.我终于通过使用RC-2每晚构建版本来使用我的代码.现在我的问题是,我希望能够在未经身份验证的用户的情况下重定向到外部URL.以下是我的身份验证代码示例:

        var key = "mysupersecretkey=";
        var encodedkey2 = Convert.FromBase64String(key);
        app.UseJwtBearerAuthentication(options =>
        {
            options.AutomaticAuthenticate = true;
            options.AutomaticChallenge = true;
            options.TokenValidationParameters.IssuerSigningKey = new SymmetricSecurityKey(encodedkey2);
            options.TokenValidationParameters.ValidIssuer = "https://tv.alsdkfalsdkf.com/xxx/yyy";
            options.TokenValidationParameters.ValidateIssuer = true;
            options.TokenValidationParameters.ValidAudience = "https://www.sdgfllfsdkgh.com/";
            options.TokenValidationParameters.ValidateAudience = true;
            options.Configuration = new Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration()
            {
                Issuer = "https://tv.sdfkaysdf.com/xxx/yyy"
            };
        });
Run Code Online (Sandbox Code Playgroud)

现在我看到其他使用OpedId的例子,他们很容易,有一个名为的参数 RedirectUrl

 app.UseOpenIdConnectAuthentication(options => {
    ...
    options.RedirectUri = "https://localhost:44300";
    ...
 });
Run Code Online (Sandbox Code Playgroud)

任何想法如何设置RedirectUrl何时使用JwtBearerAuthentication???

c# asp.net-mvc jwt asp.net-core-mvc asp.net-core

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