Posts

Pretty Print Array of Arrays in .NET C#

Image
I had a need to pretty-print an array of arrays while parsing some JSON recently. I couldn't find anything I liked, so I thought I'd post what I ended up with here to save others some time.

https://gist.github.com/aaronhoffman/4232d28b769b3e95b143cf609a9e27cc


Example Output:
[[1,2,3],[3,5,7],[2,4,6]]
[[1,2,3]]
[[1,2,3],[3,5,7,9,11],[2,4,6]]


public string PrettyPrintArrayOfArrays(int[][] arrayOfArrays) { if (arrayOfArrays == null) return ""; var prettyArrays = new string[arrayOfArrays.Length]; for (int i = 0; i < arrayOfArrays.Length; i++) { prettyArrays[i] = "[" + String.Join(",", arrayOfArrays[i]) + "]"; } return "[" + String.Join(",", prettyArrays) + "]"; }






Hope this helps,
Aaron

Flatten HTML Document to List of Tags, Attributes, and Values

I had a need to flatten a set of HTML documents to a list of the HTML tags in their head sections.  I thought this bit of code might be useful for someone in the future.

This uses the CsQuery library which is a port of jQuery in C#: https://github.com/jamietre/CsQuery
CsQuery also has a NuGet Package: https://www.nuget.org/packages/CsQuery


//Note: Get HTML from somewhere...
var html = "";

var cq = CsQuery.CQ.Create(html);

var head = cq["head"];

var nonScriptHeadTagsQuery =
from t in head.Children()
where
t.NodeName != "SCRIPT"
&& t.NodeName != "LINK"
select new { Tag = t, TagId = Guid.NewGuid() };

var nonScriptHeadTags = nonScriptHeadTagsQuery.ToList();

var htmlTags =
nonScriptHeadTags
.SelectMany(tagInfo => tagInfo.Tag.Attributes, (tagInfo, attribute) => new { TagInfo = tagInfo, Attribute = attribute })
.Select(x => new
{
TagId = x.TagInfo.TagId,
TagType = x.TagInfo.Tag.NodeName,
AttributeName = x.Attribute.Key,
AttributeValue = x.Attribute.Value,

ASP.NET MVC 4 Bulk Add New Users

Image
----------------------
ASP.NET MVC 4 Membership Overview: http://aaron-hoffman.blogspot.com/2013/02/aspnet-mvc-4-membership-users-passwords.html
----------------------

I recently developed a website to replace the built in ASP.NET Configuration Website Administration Tool provided by Microsoft and Visual Studio.

Source available here: https://github.com/StoneFinch/SmpMaintenance

Direct link to download source code: https://github.com/StoneFinch/SmpMaintenance/archive/master.zip


This tool has the ability to add new users to a ASP.NET MVC 4 website in bulk.  For example, if you have a list of usernames and passwords that you want to set up new accounts for, you can use the "Bulk Add New Users" functionality.



Users can also be added to Roles via this page.  Multiple Roles are separated by spaces.


Hope this helps,
Aaron


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)',@0=N'UserName',…