我实现了一个自定义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.
此方法调用FindByNameAsync和GetPasswordHashAsync,它始终返回null.
public Task<DatabaseLogin> FindByNameAsync(string …Run Code Online (Sandbox Code Playgroud) 我的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我将数据保存在内存或字段类型中有关,请告诉我.请注意,我也需要这些对象用于其他任务,因此我无法在首先过滤它们并将它们加载到内存之前.
我在Kendo Window里面有一个Kendo Grid.如何使用包装器启用其水平滚动?
我尝试过任何东西,但都没有奏效.我尝试的最后一件事是围绕Grid,宽度有限div.
我想auto increment在我的剑道网格中有一个专栏.此字段不是服务器端自动增量,因为我希望用户查看该值并能够更改它.
我目前的解决方案是向按钮添加一个click属性Create并循环遍历行以找到最高值并递增它.
但是如何在新创建的行中插入此值?Click事件发生在创建新行之前.
所以有两种可能的解决方案:
这是我的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) 我的应用程序的所有身份验证和授权过程都是使用存储过程完成的.我已经写了所有我需要的功能,例如一类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) 我有一个通用的剑道窗口,我呼吁不同的部分视图.我无法使用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"> </div>
<div class="clearfix"> </div> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在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)
我已经试过各种select与ToDictionary查询后,却没有一次成功.
当我正在编辑视图或其他非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,并考虑发布配置文件.
在Edit和Destroy中,Kendo网格也有一个Select命令.但似乎这个操作没有配置.你知道我怎么用吗?任何更好的JS绑定方式,如自定义命令?请注意,它没有click事件.
这条线在我的Kendo网格,列部分.
columns.Command(command => { command.Select(); command.Edit(); command.Destroy(); });
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些数字附加到字符串中,该字符串已经包含波斯字符,并且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)
最后一个附加应该是英文编号,但事实并非如此.
c# ×5
.net ×4
asp.net-mvc ×4
kendo-ui ×4
kendo-grid ×3
dictionary ×1
javascript ×1
kendo-window ×1
linq ×1
performance ×1