小编Akb*_*ari的帖子

将UserManager.FindAsync与自定义UserStore一起使用

我实现了一个自定义UserStore,它实现IUserStore<DatabaseLogin, int>IUserPasswordStore<DatabaseLogin, int>.

我的登录操作方法如下:

if (ModelState.IsValid)
{
    if (Authentication.Login(user.Username, user.Password))
    {
        DatabaseLogin x = await UserManager.FindAsync(user.Username, user.Password);
        DatabaseLogin Login = Authentication.FindByName(user.Username);
        if (Login != null)
        {
            ClaimsIdentity ident = await UserManager.CreateIdentityAsync(Login,
                DefaultAuthenticationTypes.ApplicationCookie);
            AuthManager.SignOut();
            AuthManager.SignIn(new AuthenticationProperties
            {
                IsPersistent = false
            }, ident);
            return RedirectToAction("Index", "Home");
        }
    }
    else
    {
        ModelState.AddModelError("", "Invalid Login");
    }
}
return View();
Run Code Online (Sandbox Code Playgroud)

在我写的自定义身份验证类中Authentication,我有一个工作正常的Login方法,FindByName方法也返回一个app用户.但是,如果我尝试SignIn使用该登录,则用户不会被识别为已验证且HttpContext.User.Identity始终为null,因此我想我必须尝试UserManager.FindAsync.

此方法调用FindByNameAsyncGetPasswordHashAsync,它始终返回null.

public Task<DatabaseLogin> FindByNameAsync(string …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc asp.net-identity-2

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

Linq表现:我应该首先使用`where`或`select`

我的List记忆力很大,来自一个大约20岁的班级properties.

我想基于一个过滤此列表property,对于特定任务,我只需要一个列表property.所以我的查询是这样的:

data.Select(x => x.field).Where(x => x == "desired value").ToList()
Run Code Online (Sandbox Code Playgroud)

哪一个让我有更好的表现,Select先使用或使用Where

data.Where(x => x.field == "desired value").Select(x => x.field).ToList()
Run Code Online (Sandbox Code Playgroud)

如果这与data type我将数据保存在内存或字段类型中有关,请告诉我.请注意,我也需要这些对象用于其他任务,因此我无法在首先过滤它们并将它们加载到内存之前.

c# linq performance linq-to-entities query-performance

10
推荐指数
2
解决办法
6510
查看次数

Kendo Grid的水平滚动

我在Kendo Window里面有一个Kendo Grid.如何使用包装器启用其水平滚动?

我尝试过任何东西,但都没有奏效.我尝试的最后一件事是围绕Grid,宽度有限div.

kendo-ui kendo-grid kendo-asp.net-mvc

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

Kendo Grid的动态默认值

我想auto increment在我的剑道网格中有一个专栏.此字段不是服务器端自动增量,因为我希望用户查看该值并能够更改它.

我目前的解决方案是向按钮添加一个click属性Create并循环遍历行以找到最高值并递增它.

但是如何在新创建的行中插入此值?Click事件发生在创建新行之前.

所以有两种可能的解决方案:

  1. 将变量作为默认值并在我的JS代码中更新它.
  2. 以某种方式访问​​新创建的行,并更新该值.

这是我的JS代码:

function createClick(id) {
    var grid = $("#" + id).data('kendoGrid');
    var highestRadif = 0;
    grid.tbody.find('>tr').each(function () {
        var dataItem = grid.dataItem(this);
        var radif = dataItem.SRadifReqR;
        highestRadif = highestRadif < radif ? radif : highestRadif;
    })
    alert(++highestRadif);
}
Run Code Online (Sandbox Code Playgroud)

javascript kendo-ui kendo-grid kendo-asp.net-mvc

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

实现UserManager以使用自定义类和存储过程

我的应用程序的所有身份验证和授权过程都是使用存储过程完成的.我已经写了所有我需要的功能,例如一类GetUsers,Login,AddRole,AddMember等,也用于管理用户和角色和权限管理页面,通过使用这个类来完成.

我只需要添加authentication(我的意思是该authorize属性),用于登录和注销的cookie以及为每个登录存储一些服务器端数据.我想我需要为此实施Identity

在这种情况下,你能指导我实施吗?看来你需要做的最基本的事情就是实现一个create将实例传递IUserStore给构造函数的方法.但我不需要为用户或角色提供任何表,我该如何实现此方法?

这是当前的类,如果您需要查看使用存储过程的自定义身份验证类,请告诉我.

public class AppUserManager : UserManager<AppUser>
{
    public AppUserManager(IUserStore<AppUser> store) : base(store) { }
    public static AppUserManager Create(IdentityFactoryOptions<AppUserManager> options, IOwinContext context)
    {
        //AppUserManager manager = new AppUserManager();
        //return manager;
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net asp.net-mvc asp.net-identity asp.net-identity-2

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

使用Bootstrap设置Kendo Window的内容

我有一个通用的剑道窗口,我呼吁不同的部分视图.我无法使用bootstrap设置内容样式,因为它会在不同的浏览器中导致不同的布局,并且元素总是混乱.

这是一个示例:

<div class="form-group form-inline">
    <div class="line">
        <div class="col-xs-6">
            @Html.LabelFor(m => m.2, new { @class = "col-xs-4 control-label" })
            @Html.DisplayFor(m => m.2)
        </div>
        <div class="col-xs-4">
            @Html.LabelFor(m => m.3, new { @class = "col-xs-4 control-label" })
            @Html.DisplayFor(m => m.3)
        </div>
    </div>
    <div class="line">
        <div class="col-xs-6">
            @Html.LabelFor(m => m.4, new { @class = "col-xs-4 control-label" })
            @Html.DisplayFor(m => m.4)
        </div>
        <div class="col-xs-4">
            @Html.LabelFor(m => m.5, new { @class = "col-xs-4 control-label" })
            @Html.DisplayFor(m => m.5)
        </div>
    </div>
</div>
<div class="clearfix">&nbsp;</div>
<div class="clearfix">&nbsp;</div> …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc twitter-bootstrap kendo-ui kendo-window

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

在Entity Framework 6中使用SqlQuery <Dictionary <string,string >>

我正在尝试在EF 6中执行SQL查询.select查询返回两个字符串列,例如select 'a', 'b',并且可以包含任意数量的行.

我想将结果映射到字典,但我无法得到以下错误.

错误1无法将类型'System.Data.Entity.Infrastructure.DbRawSqlQuery>'隐式转换为'System.Collections.Generic.Dictionary'

这是代码:

using (var db = new EFDbContext())
{
    Dictionary<string, string> perms = new Dictionary<string, string>();
    perms = db.Database.SqlQuery<Dictionary<string, string>>(TheQuery);
}
Run Code Online (Sandbox Code Playgroud)

我已经试过各种selectToDictionary查询后,却没有一次成功.

.net c# dictionary entity-framework entity-framework-6

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

只发布控制器

当我正在编辑视图或其他非dll文件时,我可以按下CTRL + ; + P将该文件发布到Web服务器.但是,它不适用于控制器,可能是因为它们将被编译为dll文件.

有没有办法编译和发布dll文件,避免发布整个项目的长时间延迟?

编辑

感谢Sarvjeet,我知道我可以构建项目并复制dll文件,我也可以在项目的post-build事件中编写脚本,如下所示:

copy "$(TargetPath)" "C:\inetpub\wwwroot\bin\$(TargetFileName)"
Run Code Online (Sandbox Code Playgroud)

我希望有一个更好的方法,让我使用短键CTRL + ; + P,并考虑发布配置文件.

asp.net-mvc visual-studio visual-studio-2013

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

Kendo grid的Select命令操作配置

在Edit和Destroy中,Kendo网格也有一个Select命令.但似乎这个操作没有配置.你知道我怎么用吗?任何更好的JS绑定方式,如自定义命令?请注意,它没有click事件.

这条线在我的Kendo网格,列部分.

columns.Command(command => { command.Select(); command.Edit(); command.Destroy(); });
Run Code Online (Sandbox Code Playgroud)

kendo-ui kendo-grid kendo-asp.net-mvc

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

StringBuilder附加波斯数字

我正在尝试将一些数字附加到字符串中,该字符串已经包含波斯字符,并且StringBuilder始终将波斯语数字附加到字符串中.

    StringBuilder sb = new StringBuilder();
    sb.Append( other things );
    sb.Append("', '");
    sb.Append("1234234");
    sb.Append("', ");
Run Code Online (Sandbox Code Playgroud)

即使我在上面的代码中明确使用英文数字,​​我仍然最终得到波斯数字.如何将英文数字附加到此字符串?

UPDATE

这些行模拟了我的问题,您可以通过跟踪此代码来查看波斯语数字:

     StringBuilder temp = new StringBuilder();
                    temp.Append("INSERT INTO [db] (....) VALUES ('21211221', 111555, 
                                '2015/12/12', '??? ????????  ', '???? ???? ????");
                temp.Append("', '");
                temp.Append("234234");
Run Code Online (Sandbox Code Playgroud)

最后一个附加应该是英文编号,但事实并非如此.

.net c# stringbuilder

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