IDI使用以下代码创建下拉列表:
@for (var index = 0; index < Model.AdminSummaries.Count(); index++)
{
<div class="rep_tr0">
<div class="rep_td0">
@Html.DropDownListFor(x => Model.AdminSummaries[index].Status, AdminStatusReference.GetAdminStatusOptions())
</div>
Run Code Online (Sandbox Code Playgroud)
代码创建以下内容:
<select id="AdminSummaries_2__Status" name="AdminSummaries[2].Status">
<option value="1">Released</option>
<option value="2">Review</option>
<option value="3">New</option>
</select>
<select id="AdminSummaries_3__Status" name="AdminSummaries[3].Status">
<option value="1">Released</option>
<option value="2">Review</option>
<option value="3">New</option>
</select>
Run Code Online (Sandbox Code Playgroud)
有什么方法可以更改它,以便创建ID "Status_2","Status_3"等.
我有一个更新状态的存储过程.根据用户的角色,存储过程具有可能允许或不允许状态更改的代码.因此,我需要将角色名称传递给存储过程.我的角色名称存储在我的javascript代码中的客户端上,但当然我需要在服务器上进行第二次检查.每个用户只有三个角色中的一个,在请求更新状态时,我可以根据客户端的角色调用三种方法之一.这是我尝试过的.
我正在使用基于承载令牌的身份验证和ASP.NET Identity 2.1的WebApi,并且应用程序始终在浏览器中运行.我的用户已经设置了适当的角色.
我设置了一些代码来获取userId,然后转到AspNetUserRoles表以获取方法开头的角色.但是我注意到这需要大约500毫秒才能运行.作为替代方案,我正在考虑以下内容:
[HttpPut]
[Authorize(Roles = "Admin")]
[Route("AdminUpdateStatus/{userTestId:int}/{userTestStatusId:int}")]
public async Task<IHttpActionResult> AdminUpdateStatus(int userTestId, int userTestStatusId)
{
return await UpdateStatusMethod(userTestId, userTestStatusId, "Admin");
}
[HttpPut]
[Authorize(Roles = "Student")]
[Route("StudentUpdateStatus/{userTestId:int}/{userTestStatusId:int}")]
public async Task<IHttpActionResult> StudentUpdateStatus(int userTestId, int userTestStatusId)
{
return await UpdateStatusMethod(userTestId, userTestStatusId, "Student");
}
[HttpPut]
[Authorize(Roles = "Teacher")]
[Route("TeacherUpdateStatus/{userTestId:int}/{userTestStatusId:int}")]
public async Task<IHttpActionResult> TeacherUpdateStatus(int userTestId, int userTestStatusId)
{
return await UpdateStatusMethod(userTestId, userTestStatusId, "Teacher");
}
private async Task<IHttpActionResult> UpdateStatusMethod(int userTestId, int userTestStatusId, string roleName)
{
// Call the stored procedure here …
Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc asp.net-web-api asp.net-identity asp.net-identity-2
我想设置一个字段ID如下:
@Html.EditorFor(x => x.Order, new { id = string.Format("Order_{0}", Model.Row) })
Run Code Online (Sandbox Code Playgroud)
但这会产生以下结果,似乎我的id未被设置:
<input type="text" value="334" name="item.Order" id="item_Order" class="text-box single-line">
Run Code Online (Sandbox Code Playgroud)
有谁知道我做错了什么.我检查了EditorFor的允许格式,并在google上查看了示例,但我看不到任何符合我需要的内容.
有关此问题的改进解决方案,请参阅问题的底部
我现在已经尝试了一段时间来获得降落工作的指令.这是stackoverflow使用的完全相同的编辑器.Stackoverflow在此处提供此代码:
https://code.google.com/p/pagedown/
互联网上有一些版本,但都没有.我需要的是一个与所有编辑器按钮一起出现的内容,就像stackoverflow一样,当内联编码时,以及它作为ngRepeat的一部分内联时.
我希望这个指令在内联编码时使用,也可以在使用Angular 1.2.7版本的ng-repeat内部工作.我们需要的是,当模型数据发生变化时,指令需要更新页面向下视图以显示新的问题和答案.当用户更改向下翻页编辑区域时,指令需要能够更新模型.当用户单击[保存]时,需要将模型数据保存到数据库(或至少保存到另一个对象以确认其有效).
该指令需要能够响应模型中的更改,并在键盘上或在编辑窗格中按下"更改"按钮时将其原始数据保存到模型中.这是我到目前为止所拥有的.请注意,此版本没有$ wmdInput.on('更改',但它是需要的开始.
最重要的是我想使用Angular和jQuery 2.0.3的1.2.7版本.请注意,我发现版本1.2.2和1.2.7之间的非工作代码存在差异.我认为最好的解决方案适用于最新版本(1.2.7).
更新
我现在这个指令更简单,解决了我最近遇到的内容没有显示的问题.我强烈建议使用这个基于接受的答案的指令加上一些改进:https://github.com/kennyki/angular-pagedown
我有几个关于如何从我的数据库访问数据的建议:
var allMyIds
= context.Database.ExecuteSqlCommand("select id from AspNetUserLogins");
var allMyIds
= context.Database.SqlQuery<string>("select id from AspNetUserLogins");
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释这些之间的区别吗?
c# asp.net entity-framework sql-server-2012 entity-framework-6
我有用于检查与服务器的连接的代码.我的代码每60秒运行一次.代码运行后,它会创建一条消息,并显示在页面上.这是我到目前为止所拥有的:
检查的代码:
$interval(function () {
us.isConnected().then(closeConnect, openConnect);
}, 60 * 1000);
Run Code Online (Sandbox Code Playgroud)
执行检查的代码
isConnected = (): ng.IPromise<any> => {
var self = this;
var deferred = this.$q.defer();
this.$http({
method: 'GET',
url: self.ac.baseUrl + '/api/Connect/Verify'
})
.success(() => {
self.connects = 0;
self.connectMessage = null;
deferred.resolve();
})
.error(() => {
if (self.connects == 0) {
self.connectMessage = "Unable to establish a connection to the server. " + retryMessage();
} else if (self.connects == 1) {
self.connectMessage = "Unable to establish a connection …
Run Code Online (Sandbox Code Playgroud) 我有一个AngularJS
客户端应用程序使用javascript
(不是coffeescript或typescript)Oauth2来WebAPI 2
使用最新的应用程序进行身份验证Identity 2
.我的应用程序中的所有软件都是最新的,并且基于this example
.我的客户端浏览器目标是IE9及更高版本.
请注意,我从上面的示例中做了一些小的更改,因为我没有对使用转换发送到服务器的所有数据进行urlencode.相反,我只在下面的身份验证方法中urlencode:
user.authenticate = function (userName, password, rememberMe, successCallback, errorCallback) {
var config = {
method: 'POST',
url: '/Token',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
data: 'grant_type=password&username=' + encodeURIComponent(userName) + '&password=' + encodeURIComponent(password),
};
Run Code Online (Sandbox Code Playgroud)
我正在使用VS2013 Update 2开发,在服务器上,我使用C#,最新的Entity Framework和SQL Server 2012.
要登录我的客户端,请将/ Token方法调用到WebAPI并传递用户标识和密码.然后WebAPI用令牌响应我存储的客户端.每次向WebAPI发出请求时,都会发送令牌并进行身份验证:
$http.defaults.headers.common.Authorization = 'Bearer ' + user.data.bearerToken;
Run Code Online (Sandbox Code Playgroud)
到目前为止,这种方法非常有效,但是现在应用程序无法区分分配了不同角色的用户之间的区别.
某些WebAPI方法只能由具有特定角色的用户执行.我想调整我的前端AngularJS应用程序的菜单,这样只有当用户具有此角色时,才会显示相应的链接.我确实意识到这不会阻止用户检查HTML和发布,但我并不关心这一点,因为我仍然会使用方法修饰来限制不在角色中的用户执行操作的能力.
有人能给我一个例子,说明如何使用上面提到的产品套件,我在问题中加上JavaScript Web Tokens,如果它们有助于使解决方案更新.从我理解的角色是由声明处理,但我不明白如何添加这些并将其发送回带有令牌的客户端.我在互联网上做了很多研究,但我找不到任何好的例子,因为我认为大部分都是新的,没有多少人有机会探索SPA如何使用这些最新的软件组件.
在回答这个问题时,请注意我不是在寻找可以告诉社区如何在服务器上设置角色的答案,或者是一个解释在服务器上提供角色检查的重要性的答案.我想几乎每个人都知道这一点.我真正想到的是一些非常详细的技术建议,包括示例代码和解释.为了使答案集中,如果不满足此需求的答案不作为建议的答案发布,那么对每个人来说可能会有所帮助.
先感谢您.
asp.net oauth claims-based-identity asp.net-web-api angularjs
我有以下内容:
DROP TABLE [dbo].[ExtraUserInformation];
DROP TABLE [dbo].[UserProfile];
DROP TABLE [dbo].[webpages_Membership];
DROP TABLE [dbo].[webpages_OAuthMembership];
DROP TABLE [dbo].[webpages_Roles];
DROP TABLE [dbo].[webpages_UsersInRoles];
CREATE TABLE [dbo].[ExtraUserInformation] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[UserId] INT NOT NULL,
[FullName] NVARCHAR (MAX) NULL,
[Link] NVARCHAR (MAX) NULL,
[Verified] BIT NULL,
CONSTRAINT [PK_dbo.ExtraUserInformation] PRIMARY KEY CLUSTERED ([Id] ASC)
);
CREATE TABLE [dbo].[webpages_UsersInRoles] (
[UserId] INT NOT NULL,
[RoleId] INT NOT NULL,
PRIMARY KEY CLUSTERED ([UserId] ASC, [RoleId] ASC),
CONSTRAINT [fk_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[UserProfile] ([UserId]), …
Run Code Online (Sandbox Code Playgroud) 我已经为我的应用程序创建了测试.一切正常,但运行缓慢,即使只有1/3的应用程序经过测试,仍然需要大约十分钟才能让protrator创建测试数据,填写字段,点击提交按钮等.
我正在使用Google Crome进行测试.当我看着量角器逐一填写字段时,它似乎很慢.
这是我的测试套件的一个例子:
suites: {
login: ['Login/test.js'],
homePage: ['Home/test.js'],
adminPage: ['Admin/Home/test.js'],
adminObjective: ['Admin/Objective/test.js'],
adminObjDetail: ['Admin/ObjectiveDetail/test.js'],
adminTopic: ['Admin/Topic/test.js'],
adminTest: ['Admin/Test/test.js'],
adminUser: ['Admin/User/test.js'],
adminRole: ['Admin/Role/test.js']
},
Run Code Online (Sandbox Code Playgroud)
这是一个测试组:
login: ['Login/test.js'],
homePage: ['Home/test.js'],
adminUser: ['Admin/User/test.js'],
adminRole: ['Admin/Role/test.js']
Run Code Online (Sandbox Code Playgroud)
这是另一个测试组:
adminPage: ['Admin/Home/test.js'],
adminObjective: ['Admin/Objective/test.js'],
adminObjDetail: ['Admin/ObjectiveDetail/test.js'],
adminTopic: ['Admin/Topic/test.js'],
adminTest: ['Admin/Test/test.js'],
Run Code Online (Sandbox Code Playgroud)
这两个组可以独立运行,但它们必须按照我上面的顺序运行.在答案之后,我确实阅读了关于共享但我不确定这是否有助于我的情况,因为我的测试需要按顺序运行.理想情况下,我希望在一个浏览器中运行一组测试,而在另一个浏览器中设置另一组测试.
我读到了像PhantomJS这样的无头浏览器.有没有人有这些更快的经验?关于如何做到这一点的任何建议将不胜感激.
我尝试将其添加到.gitattributes:
* text=auto
*.sql diff
Run Code Online (Sandbox Code Playgroud)
但它仍然显示如下:
BIN ????? WebRole/Sql/Objects/dbo.Content.Table.sql ?
WebRole/Sql/dbo.Content.Table.sql Binary file not shown
Run Code Online (Sandbox Code Playgroud)
非常感谢这方面的帮助.
angularjs ×4
asp.net ×3
asp.net-mvc ×3
c# ×1
git ×1
github ×1
oauth ×1
pagedown ×1
protractor ×1
sql-server ×1