这是我的表:
PupilNutrition
Id PupilId NutritionId
1 10 100
2 10 101
Run Code Online (Sandbox Code Playgroud)
我的另一张桌子营养:
Id Nutritioncategory BatchId NutritionRate NutritionId Operation
1 A 1 9000 100 1
2 B 1 5000 100 0
3 C 1 5000 100 1
4 D 2 6000 101 2
5 E 2 7000 101 2
6 F 2 8000 101 0
Run Code Online (Sandbox Code Playgroud)
这是存储最终费率的一个字段:
decimal Rate= 0;
Run Code Online (Sandbox Code Playgroud)
案例1:值为0且批次为1的操作字段
Rate= Rate + NutritionRate(i.e 5000 because for batch id 1 with condition 0 only 1 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取变体列表,并且对于每个变体都可以获得所有subvariants list
变量,无论特定的子变量在哪里Test say 100
.这是样本数据:
Id TestId SourceSubVariantId TargetSubVariantId DiffPerc
114 100 66 67 100.00
115 100 67 68 100.00
116 100 70 71 99.99
Run Code Online (Sandbox Code Playgroud)
变体1有3个子变量:
Id=66,Name=Abc
Id=68,Name=Pqr
Id=69,Name=xyz
Run Code Online (Sandbox Code Playgroud)
变体2有3个子变量:
Id=70,Name=lmn
Id=71,Name=xxx
Id=72,Name=hhh
Run Code Online (Sandbox Code Playgroud)
但是,在我的输出注意到我得到的所有Id as 0
的Variants 2
subvariants list
在Variant1 CustomSubvariantList
:
数据模型:
public class Variants
{
public int Id { get; set; }
public string Name { get; set; }
public string Type { get; set; …
Run Code Online (Sandbox Code Playgroud) 我在使用关联数组绑定我的下拉列值时遇到问题.
问题是跟踪,因为当我没有添加跟踪到我的下拉列表然后我有我的下拉列表和当我添加跟踪时,我无法自动选择下拉值.
我想使用带有ng-options的track by,以便angular js不会添加$$ hashKey并利用与track by相关的性能优势.
我不明白为什么会发生这种情况.
注意:我只想为每个$ scope.items而不是整个对象绑定像Pizza或burger这样的选项名称.
更新:据我所知,并且尝试使用我的$ scope.items的当前数据结构,它不能使用ng-options,我想使用跟踪的ng-options来避免Angular js生成散列键.我也按照@MarcinMalinowski的建议尝试了ng-change,但是我得到了未定义的密钥.
那么$ scope.items的数据结构应该是什么,以便当我需要访问$ scope.items中的任何项目时?我可以在不进行循环的情况下访问它(就像我们从关联数组中访问项目一样),就像我现在可以使用正确的数据结构访问它并仅使用跟踪的ngoptions一样.
var app = angular.module("myApp", []);
app.controller("MyController", function($scope) {
$scope.items = [
{
"title": "1",
"myChoice" :"",
"choices": {
"pizza": {
"type": 1,
"arg": "abc",
"$$hashKey": "object:417"
},
"burger": {
"type": 1,
"arg": "pqr",
"$$hashKey": "object:418"
}
}
},
{
"title": "2",
"myChoice" :"",
"choices": {
"pizza": {
"type": 1,
"arg": "abc",
"$$hashKey": "object:417"
},
"burger": {
"type": …
Run Code Online (Sandbox Code Playgroud)我使用Asp.net的身份进行登录,注册,忘记密码等和源代码从该采取以下链接:
现在我有一个UserMaster表,在注册期间我要求以下字段: FullName,EmailId,Password,ContactNumber,Gender.
我的UserMaster包含以下字段:Id,FullName,EmailId,ContactNumber,Gender
现在,当用户提交注册表格时,此FullName,EmailId,ContactNumber,Gender将与电子邮件一起保存在UserMaster中,密码将保存在AspnetUser中.
我的注册方法与上面2个链接中提供的相同.
在这里您可能会注意到我的UserMaster和AspnetUser之间没有任何关系,所以在登录时用户将输入他的电子邮件ID登录我将使用此方法await SignInManager.PasswordSignInAsync
验证用户,如果此方法返回成功,那么我将要使用此电子邮件ID并在我的UserMaster中检查此电子邮件,并找到匹配的地方我将从UserMaster获取UserId并将其存储在会话中并使用我的登录方法使用我的应用程序,如下所示:
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
using (var context …
Run Code Online (Sandbox Code Playgroud) 我有一个注册表单,其中包含3到4个下拉控件和2个日期选择器,现在当选择下拉控件值时(选择索引更改被触发)然后我不希望我的页面回发.
我使用更新面板来阻止这种帖子的行为,如下所示:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%--Update Panel for date picker%>
<asp:UpdatePanel ID="UpdatePanelDatepicker" runat="server">
<ContentTemplate>
<telerik:RadDatePicker ID="rdpDate1" runat="server">
</telerik:RadDatePicker>
</ContentTemplate>
</asp:UpdatePanel>
<%--Update Panel for Dropdown--%>
<asp:UpdatePanel ID="updatepaneldata" runat="server">
<ContentTemplate>
<telerik:RadComboBox ID="ddlCountry" runat="server">
</telerik:RadComboBox>
</ContentTemplate>
</asp:UpdatePanel>
</ContentTemplate>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
所以我只是想问这是在更新面板下放置多个控件的正确方法吗?
现在在我的记录中:
14.3,14.2和14.1属于Id = 30的部分.
我想在下面实现:
1)默认情况下,将选择前2个ID.现在,如果用户尝试选择属于部分30的id = 71,则不应允许用户选择id = 71,因为已经选择了部分30的更高版本,即id = 76.
2)现在,如果用户取消选中id = 77(33),则应允许用户检查id = 71,因为现在没有选择不同的部分,因此用户应该允许检查id = 30的所有部分但是一旦用户选择不同部分然后下部应该取消选中.
我的代码有问题:
1)当我取消选中16.1并尝试检查14.2时,我不允许检查它.我应该允许检查14.2,因为现在这里没有不同的部分.
2)默认情况下检查16.1和14.3.现在当我检查15.1然后再检查14.1然后14.3取消选中这是错误的,因为14.3在部分id = 30中最高所以我不应该检查14.1.
var app = angular.module('myApp', []);
app.controller('myCtrl', function ($scope) {
$scope.myArray = [
{
"id": 77,
"selected": true,
"part": 33,
"name": "16.1",
},
{
"id": 76,
"part": 30,
"selected": true,
"name": "14.3",
},
{
"id": 71,
"part": 30,
"selected": false,
"name": "14.2",
},
{
"id": 70,
"part": 31,
"selected": false,
"name": "15.1",
}, …
Run Code Online (Sandbox Code Playgroud)我Telerik Gridview
用于显示记录列表,我有超过10页我正在使用此gridview与以下常见事件代码复制粘贴(有一些小的更改)在所有这些页面上:
protected void Page_Load(object sender, EventArgs e)
{
DisplayRecords()
}
public void DisplayRecords()
{
//Grid view names are different on different pages.
GridView1.DataSource=Fetching records from database.
GridView1.DataBind();
}
protected void GridView1_SortCommand(object sender, GridSortCommandEventArgs e)
{
DisplayRecords()
}
protected void GridView1_PageIndexChanged(object sender, GridPageChangedEventArgs e)
{
var index = e.NewPageIndex;
DisplayRecords()
}
protected void GridView1_PageSizeChanged(object sender, GridPageSizeChangedEventArgs e)
{
var size = e.NewPageSize;
DisplayRecords()
}
Run Code Online (Sandbox Code Playgroud)
这是我的一页继承自以下页面:
public partial class LoadSettings : ParentPage
{
//Load events and other …
Run Code Online (Sandbox Code Playgroud) 我正在使用microsoft asp.net身份的自定义实现,因为我有自定义表,这就是为什么我已经给出了我的所有方法IUserStore和IUserPasswordStore的自定义实现.
问题是当用户登录然后在10-15分钟之后登录用户会话到期但我想要的是除非用户注销我想让用户登录系统.
码:
public partial class Startup
{
public void ConfigureAuth(IAppBuilder app)
{
app.CreatePerOwinContext(ApplicationDbContext.Create);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
}
}
Run Code Online (Sandbox Code Playgroud)
账户管理员:
[Authorize]
public class AccountController : Controller
{
public AccountController()
: this(new UserManager<UserModel>(new UserStore()))
{
}
public AccountController(UserManager<UserModel> userManager)
{
UserManager = userManager;
}
public UserManager<UserModel> UserManager { …
Run Code Online (Sandbox Code Playgroud) 我使用asp.net身份创建新用户但收到错误:
无法将值NULL插入列'Id',表'Mydb.dbo.AspNetUsers'; 列不允许空值.INSERT失败.\ r \n语句已终止
但是在这里我没有像AspNetUsers这样的表,而是我拥有自己的用户表.
代码: Web.config:2个连接字符串
<add name="myEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=;initial catalog=mydb;user id=sa;password=sdfsdfsdf;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
<add name="MyConnString" connectionString="data source=;initial catalog=Mydb;user id=sa;password=sdfsdfsdf;" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
IdentityModel.cs:
public class ApplicationUser : IdentityUser
{
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
this.SecurityStamp = Guid.NewGuid().ToString();
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
public string Id { get; set; }
public …
Run Code Online (Sandbox Code Playgroud) 我正在关注此文章以撤消用户访问权限:
现在考虑验证用户后我已经发布了一个30分钟生命周期的accessstoken,如上文所示,刷新令牌为1天,但如果管理员在10分钟内删除该用户20分钟仍然如此,那么现在我需要撤消该用户的访问权限.
为了做到这一点,我需要从刷新令牌表中删除该用户条目以禁止进一步的访问令牌请求,但由于accessstoken到期时间仍然有20分钟,因此用户将能够访问完全错误的受保护资源.
所以我想实现缓存机制来缓存服务器上的访问令牌并保存在数据库中.因此,当该用户被撤销时,我可以简单地从缓存和数据库中删除该用户条目,以阻止该用户访问访问受保护资源.
但是下面这两个答案说这不是oauth2的设计方式:
撤消OAuthBearerAuthentication的访问令牌
所以我的问题是:
1)为什么缓存访问令牌不被认为比刷新令牌机制更好,也是一种糟糕的方法?
我的第二个问题是基于@Hans Z给出的以下答案,其中他说:
这必然涉及资源服务器(RS)咨询授权服务器(AS),这是一个巨大的开销.
2)在撤销对访问用户的情况下,为什么会RS AS因为仅仅是用于验证用户生成访问令牌按本咨询文章?
3)在文章中只有2个项目:
资源服务器 - 借助[Authorize]
属性验证accesstoken
在上述情况下,授权服务器呢?
更新:我已决定使用刷新令牌撤消用户访问以防用户被删除,并且当用户注销时我将刷新令牌刷新令牌,因为您要求我们在用户点击注销后立即注销用户.
但这里的问题是我有250个与用户相关的角色,所以如果我把角色放在accesstoken中那么,accessstoken的大小将是如此巨大,我们无法从头部传递这样巨大的accessstoken但我无法查询角色以验证每次端点的用户访问权限调用端点.
所以这是我面临的另一个问题.
c# ×8
asp.net ×4
asp.net-mvc ×4
owin ×4
angularjs ×2
javascript ×2
linq ×2
delegates ×1
gridview ×1
left-join ×1
oauth-2.0 ×1
performance ×1
telerik ×1
telerik-grid ×1
token ×1
updatepanel ×1