小编Chr*_*gax的帖子

在第二级包含多个引用

假设我们有这个模型:

public class Tiers
{
    public List<Contact> Contacts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

public class Contact
{
    public int Id { get; set; }
    public Tiers Tiers { get; set; }
    public Titre Titre { get; set; }
    public TypeContact TypeContact { get; set; }
    public Langue Langue { get; set; }
    public Fonction Fonction { get; set; }
    public Service Service { get; set; }
    public StatutMail StatutMail { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用EF7,我想从Tiers表中检索所有数据,包括Contact表中的数据,Titre表中的数据,TypeContact表中的数据等等......只需一条指令.使用Include/ThenInclude API,我可以编写如下内容:

_dbSet
     .Include(tiers => …
Run Code Online (Sandbox Code Playgroud)

entity-framework-core asp.net-core-mvc

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

在ASP.NET 5中等效于MvcHtmlString?

ASP.NET 5中是否存在MvcHtmlString的等效项?否则,我们如何正确地从我的自定义HTMLHelper方法呈现HTML输出?

html-helper asp.net-core-mvc asp.net-core

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

ASP.NET 5/MVC 6 Ajax将模型发布到Controller

在我的ASP.NET 5 MVC 6应用程序中,我想向Ajax发布一些数据到我的控制器.我已经使用ASP.NET MVC 5完成了这项工作,我在一个空白的ASP.NET MVC 5项目中测试了完全相同的代码并且它可以工作,但是新版本我不能,我不知道为什么.通过Ajax调用,我可以转到控制器,创建模型但字段为空(或布尔值为false).这是我的代码:

script.js:

var data = {
            model: {
                UserName: 'Test',
                Password: 'Test',
                RememberMe: true
            }
        };

        $.ajax({
            type: "POST",
            url: "/Account/Login/",
            data: JSON.stringify(data),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                // Do something interesting here.
            }
        });
Run Code Online (Sandbox Code Playgroud)

AccountController.cs:

[HttpPost]
    public JsonResult Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            //var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, shouldLockout: false);
            //if (result.Succeeded)
            //{
            //     //return RedirectToLocal(returnUrl);
            //}

            ModelState.AddModelError("", "Identifiant ou mot de passe invalide");
            return …
Run Code Online (Sandbox Code Playgroud)

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

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

带接口的扩展方法

假设我们有这个模型:

public abstract class AbstractTableReferentielEntity {}
public class EstimationTauxReussite : AbstractTableReferentielEntity { }
Run Code Online (Sandbox Code Playgroud)

我为从AbstractTableReferentielEntity继承的所有类创建了一个扩展方法.

public static EntityItemViewModel ToEntityItem<T>(this T entity)
    where T : AbstractTableReferentielEntity {}
Run Code Online (Sandbox Code Playgroud)

但对于一种特定类型的AbstractTableReferentielEntity(如EstimationTauxReussite),我想执行一个特定的操作,所以我创建了第二个扩展方法.

 public static EntityItemViewModel ToEntityItem(this EstimationTauxReussite entity) {}
Run Code Online (Sandbox Code Playgroud)

所有扩展方法都在同一名称空间中声明.

之后,我从具有Entity Framework的数据库中检索一些数据:

protected List<EntityItemViewModel> GetAllActifEntityItem<T>()
    where T : AbstractTableReferentielEntity
{
    return Context
        .Set<T>()
        .Where(item => item.IsActif)
        .Select(item => item.ToEntityItem())
        .ToList();
}
Run Code Online (Sandbox Code Playgroud)

它汇编.

当运行时的T是EstimationTauxReussite类型时,它ToEntityItem在我调用时会进入错误的方法Select(item => item.ToEntityItem()).它没有进入最具体的扩展方法.有任何想法吗 ?

c# inheritance extension-methods

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

从Startup类访问Configuration对象

我想从我的ASP.NET vNext项目中的许多控制器中访问我公司的Active Directory,并将域名插入到我的config.json文件中,因此我可以从Configuration类访问它.我发现每次想要访问我的config.json时总是实例化一个新的Configuration对象很重,有没有办法通过IConfigurationAPI来访问初始化为Startup类的Configuration类?

c# asp.net-core-mvc

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

AuthorizationHandler和数据库依赖注入

我们基于身份验证开发了一个多租户应用程序.每个用户获得存储在数据库中的令牌会话,以告知用户是否仍然连接(具有到期时间).我将令牌(以及有关用户公司的其他信息)存储在用户中Claim.在身份检测到用户仍然连接(或不连接)之后,我需要检查用户令牌在我们的数据库中是否仍然有效(但只有在他连接时),所以我实现了AuthorizationHandler.

public TokenValidHandler(MyDatabaseService service)
{
     // No information about the user connection string
}

protected override async void Handle(AuthorizationContext context, TokenValidRequirement requirement)
{
    // Check the token in database
}
Run Code Online (Sandbox Code Playgroud)

我像这样注册我的处理程序:

services.AddAuthorization(options =>
{
     options.AddPolicy("TokenValid",policy => policy.Requirements.Add(new TokenValidRequirement()));
});

 services.AddSingleton<IAuthorizationHandler, TokenValidHandler>();
Run Code Online (Sandbox Code Playgroud)

因为我们有一个多租户应用程序,当用户退出应用程序并重新打开该站点时,他的连接字符串就会丢失(我们不想保留数据库字符串),所以我使用存储的信息Claim来恢复数据库访问.如果身份验证过期,则没有可用的信息Claim,因此我无法访问我的数据库.

正如我所看到的,TokenValidHandler即使用户没有连接也会实例化,这是正常的吗?因为在他没有的情况下,我想对我的数据库服务使用依赖注入,我不能,因为有关用户数据库访问的信息不在这里:身份没有及时检测到用户身份验证已过期.关于那个的任何想法?

asp.net-core-mvc asp.net-identity-3 asp.net-core asp.net-core-1.0

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

将自定义数据存储在Identity Cookie中

有没有办法在Identity API生成的cookie中存储用户的一些自定义数据?

我们正在构建一个多租户应用程序,因此多个公司可以访问我们的应用程序的同一个实例.这就是为什么我需要为特定用户在身份cookie中存储来自用户的公司代码,以便在关闭浏览器后返回Web应用程序时从用户检索数据.

asp.net-identity-3 asp.net-core

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

创建自定义 Http 方法

是否可以通过覆盖该类HttpMethodAttribute并指定我们自己的方法来创建我们自己的 HTTP 方法supportedMethods

事实上,根据情况,我们需要将View作为完整视图与_Layout一起返回,有时我们只需要返回该视图的PartialView。所以我的想法是放置一个自定义属性,例如,[HttpPartial]客户端会根据请求中使用的方法来判断它是否需要完整视图(GET 方法)或部分视图(PARTIAL 方法)。

http-method asp.net-core

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

获取bootstraped组件

我有一个简单@NgModule的boostrap 2组件:

// Global module for all Angular Component
@NgModule({
    declarations: Components, // directives, components, and pipes owned by this NgModule
    imports: [BrowserModule, HttpModule, FormsModule],
    providers: Providers,
    bootstrap: [Menu, Main]
})
export class MenuModule { }
Run Code Online (Sandbox Code Playgroud)

我想存储我的Main组件引导的引用MenuModule.我试图实现.then方法bootstrapModuleDynamic(),但我只获得组件的工厂.

// Bootstrap of module
platformBrowserDynamic()
    .bootstrapModule(MenuModule)
    .then((menuModule: NgModuleRef<MenuModule>) => {
        var test: ComponentFactory<Main> = (<any>menuModule).bootstrapFactories[0];
    });
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

typescript angular

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

IAuthorizationFilter 不是每次都调用

我们使用一个IAuthorizationFilter类来过滤所有请求,并检查身份验证 cookie 中是否仍然存在自定义用户声明(多租户应用程序)。这些信息对于应用程序的其余部分至关重要。如果这些信息不存在,我们将重定向到登录页面。

    public class TokenAuthorizationFilter : IAuthorizationFilter, IAsyncAuthorizationFilter
    {

        public TokenAuthorizationFilter()
        {
            // Some dependency injection ...
        }

        public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
        {
            CheckToken(context);
        }

        public Task OnAuthorizationAsync(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
        {
            return CheckToken(context);
        }
}
Run Code Online (Sandbox Code Playgroud)

我们像这样注册我们的过滤器

    services.AddMvc(config =>
    {
        config.Filters.Add(typeof(TokenAuthorizationFilter));
    });
Run Code Online (Sandbox Code Playgroud)

我想要访问的控制器的操作非常简单:

[Authorize(Policy = "TokenValid")]
public class HomeController : AjaxBaseController
{
    public IActionResult Index()
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们甚至没有达到我们的政策AuthorizeAttribute。正如我在堆栈跟踪中看到的, Identity 在检查 a 后尝试Microsoft.AspNet.Identity.SignInManager在中间件中的某个位置创建一个CookieAuthenticationOptions,我假设他正在尝试重新登录用户,但它没有检查我的 Filter ?登录在我们的应用程序中非常特殊,所以我不想让 Identity 自动登录我们的用户。当身份验证 cookie 过期时,我可以重现此问题。有任何想法吗 ?谢谢 !

c# asp.net-core-mvc asp.net-identity-3 asp.net-core

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