小编Pau*_*aul的帖子

System.Web.Webpages.Html与System.Web.Mvc命名空间中的HtmlHelper类

在ASP.NET MVC3中,我试图设置验证错误辅助方法设置的css类.(不是这个问题,接受的答案只是ADDS该类,我想完全覆盖它.)在查看MVC3源代码时,我ValidationInputCssClassName在HtmlHelper类中找到了该属性.它是可设置的,如果设置,它会将值存储在存储提供程序中.属性的get方法返回[提供者值] ??[默认类名].

现在,如果您只是在控制器代码中键入HtmlHelper.ValidationInputCssClassName(MSDN条目),您将看到它是一个静态只读字段.原因是有两个HtmlHelper类,一个在System.Web.Mvc命名空间中,另一个在System.Web.Webpages.Html命名空间中.可以设置属性System.Web.Webpages.Html.HtmlHelper.ValidationInputCssClassName(MSDN条目),但无论在何处设置它,它似乎都不会对生成的代码产生任何影响.

我错过了什么?这些课程有什么区别?

asp.net asp.net-mvc html-helper asp.net-mvc-3

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

在创建LINQ实体类时破坏POCO域模型?

假设我有一个从C#类创建的域模型,如下所示:

public class MyClass
{
public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

与模型一起,我为IoC定义了存储库接口类.

现在,我正在尝试使用LINQ映射将此POCO域模型转换为一组实体类.(这篇approch在我正在阅读MVC的书中被推荐.)在上面的例子中,这很容易做到一些属性,而不会影响类的"普通旧":

[Table]
public class MyClass
{
[Column]
public string MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我开始映射关联,更改修改等时,问题就出现了.似乎我正在迅速破坏域模型的原始概念,而只是简单地创建一组LINQ-to-SQL类.我错过了什么吗?这些类仍然是业务逻辑的正确位置吗?我是否仍然可以并且应该继续从非LINQ,非数据库源加载数据到这些类中?

谢谢

c# poco domain-model linq-to-sql

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

如何处理一个类而不是封装一个可处理的实例?

interface IMyInterace
{
void Open();
object Read();
void Close();
}

class MyImplementation : IMyInterface
{
public void Open() { /* instantiates disposible class */ }
//...
public void Close() { /* calls .Dispose(); */ }

}
Run Code Online (Sandbox Code Playgroud)

有没有一种很好的方法来处理这种情况,以确保调用类中的可处理实例?(除了文档之外,调用者没有信号他们必须调用'Close'.)IMyInterface的实现不一定封装IDisposible实例,并且在整个应用程序的生命周期内重复关闭和重新打开.

我在想这样做:

  • 在MyImplementation中实现IDisposible.
  • 设置Dispose()以调用Close().
  • 将Close()或Dispose()调用添加到Open的开头,以确保先前的调用已关闭.

IMyInterface的用户不知道他们正在使用什么实现,所以我不确定MyImplementation可处置的价值有多少,而且并非所有实现都会封装IDisposibles.

c# idisposable resource-management

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

通用方法不要调用类型'T'的方法

假设我有两个类:

class a
{
    public void sayGoodbye() { Console.WriteLine("Tschüss"); }
    public virtual void sayHi() { Console.WriteLine("Servus"); }
}

class b : a
{
    new public void sayGoodbye() { Console.WriteLine("Bye"); }
    override public void sayHi() { Console.WriteLine("Hi"); }
}
Run Code Online (Sandbox Code Playgroud)

如果我调用一个通用方法,要求类型'T'从类'a'派生:

void call<T>() where T : a
Run Code Online (Sandbox Code Playgroud)

然后在该方法中我调用类型为'T'的实例上的方法,方法调用绑定为'a',就像实例被转换为'a'一样:

call<b>();
...
void call<T>() where T : a
{
    T o = Activator.CreateInstance<T>();
    o.sayHi(); // writes "Hi" (virtual method)
    o.sayGoodbye(); // writes "Tschüss"
}
Run Code Online (Sandbox Code Playgroud)

通过使用反射,我能够得到预期的结果:

call<b>();
...
void call<T>() where T : a
{ …
Run Code Online (Sandbox Code Playgroud)

.net c# generics

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

仅从路径数据生成URL

我正在尝试在ASP.NET MVC中做一些简单的事情:

RouteValuesDictionary routeValues = GetMyRouteData();
var url = new UrlHelper(Html.ViewContext.RequestContext);
return url.RouteUrl(routeValues);
Run Code Online (Sandbox Code Playgroud)

问题在于,无论我做什么,URL都包含来自当前请求上下文的路由数据.我想基于来自的路线值生成一个URL GetMyRouteData().

谢谢

asp.net-mvc routes asp.net-mvc-3

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

IdentityServerV4参考令牌自省

我已经使用授权代码+ PKCE 与客户端设置了 IdentityServerV4 ,并设置了要引用的访问令牌类型。

new Client
{
    ClientId = "app",
    ClientName = "My Application",
    AllowedGrantTypes = GrantTypes.Code,
    RequireClientSecret = false,
    RedirectUris = { "http://site.example.com:3000/callback" },
    AllowedCorsOrigins = { "http://site.example.com:3000" },
    AllowedScopes = { "openid", "profile", "email" },
    AccessTokenType = AccessTokenType.Reference,
    RequireConsent = false,
    RequirePkce = true
}
Run Code Online (Sandbox Code Playgroud)

我现在想要在客户端应用程序和服务之间设置一个反向代理网关,该网关将在转发请求之前将引用令牌交换为常规签名的 JWT。在设置网关之前,我尝试使用从登录获得的引用令牌调用内省端点来手动执行交换。

我向身份服务器添加了一个称为“网关”的 API ,如下所述,为其提供了一个秘密,并使用具有 API 的 ID 和秘密的 IntrospectionClient 成功调用了此端点,但我收到了 active: false 的响应,并且身份服务器日志显示错误,表明令牌缺少预期范围“网关”。日志中显示的令牌信息仅显示 openid 范围。

new ApiResource("gateway"){
    ApiSecrets = { new Secret("test".Sha256()) }
}
Run Code Online (Sandbox Code Playgroud)

这会导致来自 IdentityServer 的两条日志消息:

fail: IdentityServer4.ResponseHandling.IntrospectionResponseGenerator[0] …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 jwt openid-connect identityserver4

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

LINQ to SQL中的多个Deferred WHERE子句表达式

也许是一个简单的问题,我试图从一个表中获取结果,其中Name列包含所有搜索项的数组.我正在创建一个查询并循环遍历我的搜索字符串,每次都分配query = query.Where(...);. 似乎只使用了最后一个术语,我猜想因为我每次都试图限制同一个字段.如果我叫.ToArray().AsQueryable已()在每次迭代我能得到我要找的cumlative restrinction行为,但它有一个简单的方法来做到这一点只能通过延迟执行运营商?

谢谢!

linq where-clause linq-to-sql

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

来自Delegate的PropertyInfo

假设它是一个简单的属性seletor,是否有一种简单的方法来获取委托中属性的PropertyInfo?

例:

var propertyInfo = Method<MyClass,int>(s => s.Property);

...

PropertyInfo Method(Func<T1,T2> selector)
{
   // What goes here?
}
Run Code Online (Sandbox Code Playgroud)

c# reflection delegates

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