Posts

ASP.NET MVC 4 SimpleMembershipProvider Website Administration Tool, ASP.NET Configuration

---------------------- Updated for ASP.NET MVC 5 and Identity 2.0. Includes an Azure Site Extension: http://aaron-hoffman.blogspot.com/2016/08/aspnet-mvc-5-user-admin.html ---------------------- ---------------------- ASP.NET MVC 4 Membership Overview:  http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html ---------------------- The built in ASP.NET Configuration Website Administration Tool provided by Microsoft and Visual Studio left something to be desired. I have developed an alternative that can be used with ASP.NET MVC 4 SimpleMembershipProvider. Code available here:  https://github.com/StoneFinch/SmpMaintenance Current functionality at the time of this writing:   - Add New Users   - Bulk Add New Users   - Search Users   - Add New Roles   - Edit Existing Users   - Reset User Password (on Edit User page)   - Add Users to Roles   - Remove Users from Roles Hope this helps, Aaron

ASP.NET MVC 4 SimpleMembershipProvider, Web Security Roles Add User To Role SQL, Remove User From Role SQL

Using SQL Profiler, below is the SQL that is executed when the ASP.NET MVC 4 SimpleMembershipProvider's System.Web.Security.Roles.AddUserToRole() method and RemoveUserFromRole() method are called: Text below in bold is dynamic and represents the UserName and RoleName property passed into the AddUserToRole()  method (or the UserId,   RoleId associated with the UserName,   RoleName ). Roles.AddUserToRole("UserName", "RoleName"); exec sp_executesql N'SELECT [UserId] FROM [UserProfile] WHERE (UPPER([UserName]) = @0)',N'@0 nvarchar(25)',@0=N' USERNAME ' exec sp_executesql N'SELECT RoleId FROM webpages_Roles WHERE (RoleName = @0)',N'@0 nvarchar(5)',@0=N' RoleName ' exec sp_executesql N'SELECT COUNT(*) FROM [UserProfile] u, webpages_UsersInRoles ur, webpages_Roles r Where (u.[UserName] = @0 and r.RoleName = @1 and ur.RoleId = r.RoleId and ur.UserId = u.[UserId])',N'@0 nvarchar(8),@1 nvarchar(8

ASP.NET MVC 4 SimpleMembershipProvider, Web Security Roles Create Role SQL, Delete Role SQL

---------------------- ASP.NET MVC 4 Membership Overview:  http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html ---------------------- Using SQL Profiler, below is the SQL that is executed when the ASP.NET MVC 4 SimpleMembershipProvider's System.Web.Security.Roles.CreateRole() method and DeleteRole() method are called: Text below in bold is dynamic and represents the RoleName property passed into the CreateRole() method (or the RoleId associated with the RoleName ). Roles.CreateRole("RoleName"); exec sp_executesql N'SELECT RoleId FROM webpages_Roles WHERE (RoleName = @0)',N'@0 nvarchar(8)',@0=N' RoleName ' exec sp_executesql N'INSERT INTO webpages_Roles (RoleName) VALUES (@0)',N'@0 nvarchar(8)',@0=N' RoleName ' Roles.DeleteRole("RoleName"); exec sp_executesql N'SELECT RoleId FROM webpages_Roles WHERE (RoleName = @0)',N'@0 nvarchar(8)',@0=N

Knockout.js binding syntax bind to root, self, current context

When using knockout.js  if your ViewModel is an array and you want to bind to the entire ViewModel, the syntax to bind to the ViewModel root, when the root is the current context: <ul data-bind="foreach: $data"> <li> <p data-bind="text: SomeTextProperty"> </p> </li> </ul> The XAML syntax equivalent when the DataContext is an array: <itemscontrol ItemsSource="{Binding Path=.}"> ... </itemscontrol> Hope this helps, Aaron

ASP.NET MVC 4 SimpleMembershipProvider, WebMatrix WebSecurity CreateUserAndAccount Create New User SQL

---------------------- ASP.NET MVC 4 Membership Overview:  http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html ---------------------- Using SQL Profiler, below is the SQL that is executed when the ASP.NET MVC 4 SimpleMembershipProvider's WebMatrix.WebData.WebSecurity.CreateUserAndAccount() method is called: Text below in bold is dynamic and represents the UserName and Password properties passed to the CreateUserAndAccount() method as well as the UserId generated as part of user creation. Similarly, the name of the UserId and UserName columns, and the name of the UserProfile table may also be different based on your specific configuration. exec sp_executesql N'SELECT [UserId] FROM [UserProfile] WHERE (UPPER([UserName]) = @0)',N'@0 nvarchar(23)',@0=N' UserName ' exec sp_executesql N'INSERT INTO [UserProfile] ([UserName]) VALUES (@0)',N'@0 nvarchar(23)',@0=N' UserName ' exec sp_executesq

ASP.NET MVC 4 SimpleMembershipProvider, WebMatrix WebSecurity Login SQL

---------------------- ASP.NET MVC 4 Membership Overview:  http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html ---------------------- Using SQL Profiler, below is the SQL that is executed when the ASP.NET MVC 4 SimpleMembershipProvider's WebMatrix.WebData.WebSecurity.Login() method is called: The UserName below (in bold ) is dynamic, it represents the UserName parameter passed to the Login() method. Similarly, the name of the UserId and UserName columns, and the name of the UserProfile table may also be different based on your specific configuration. exec sp_executesql N'SELECT [UserId] FROM [UserProfile] WHERE (UPPER([UserName]) = @0)',N'@0 nvarchar(25)',@0=N' UserName ' exec sp_executesql N'SELECT COUNT(*) FROM webpages_Membership WHERE (UserId = @0 AND IsConfirmed = 1)',N'@0 int',@0=1 SELECT m.[Password] FROM webpages_Membership m, [UserProfile] u WHERE m.UserId = 1 AND m.UserId =

Edit Default Visual Studio 2012 Item and Project Templates

After adding a new file or project within a Visual Studio solution there are certain settings that I always update.  Follow the steps below to edit the default templates so these settings become the default. Visual Studio 2012 Project and Item Template files are located here: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ProjectTemplates Add "public" to all new C# class files: Edit the Class.cs file by adding the word "public" in front of the word "class" The Class.cs can be found here: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\Code\1033\Class\Class.cs After you're done, it should look like this: using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ >= 3.5)using System.Linq; $endif$using System.Text; $if$ ($targetframeworkversion$ >= 4.5)using System.Threading.Tasks; $e