MultiSelect Drop Down with ASP.NET MVC Custom ID and Name Fields

I needed to create a drop down list where I could select multiple items in ASP.NET MVC, but I needed to potentially also show items already selected.  In addition the ID and Name fields would need to be customly named in the HTML attributes to match project specification when submitting a form.

Attempt 1

I had no problem creating the list, nor was there a problem setting the SELECTED items using the HTML Helper ListBoxFor

@Html.ListBoxFor(m => m.DataTypeSourceSelectedItems,
new SelectList(Model.DataTypeSourceItems, “Value”, “Text”), new { id = Model.ParameterFieldName } )

Which produced the output

<select id=”Parameter2″ multiple=”multiple” name=”DataTypeSourceSelectedItems”>
   <option value=”A”>Test A</option>
   <option selected=”selected” value=”B”>Test B</option>
   <option selected=”selected” value=”C”>Test C</option>

Functionally, this did EXACTLY what I wanted it do … my options were selected appropriately, I could select multiple outputs, and my ID was correct … BUT the name of the <select> was “DataTypeSourceSelectedItems” … I needed it to be Parameter2 alike to the ID.

So I tried to add the “name” as a htmlAttribute:

@Html.ListBoxFor(m => m.DataTypeSourceSelectedItems,
new SelectList(Model.DataTypeSourceItems, “Value”, “Text”), new { id = Model.ParameterFieldName, name = Model.ParameterFieldName } )

This still didn’t produce the output desired, so I went to another route.

Attempt 2

So I switched to utilizing ListBox standalone

@Html.ListBox(Model.ParameterFieldName, new SelectList(Model.DataTypeSourceItems, “Value”, “Text”, Model.DataTypeSourceSelectedItems), new { id = Model.ParameterFieldName } )

Which produced the output

<select id=”Parameter2″ multiple=”multiple” name=”Parameter2″>
 <option value=”A”>Test A</option>
 <option value=”B”>Test B</option>
 <option value=”C”>Test C</option>

So this time, my <select> is correct and the name and ID were matching AND correct, but NOTHING is selected.

I went back into Code and actually set the SelectListItems to have the appropriate Selected property but that didn’t have success either.

Attempt 3

Because MVC is so flexible and I don’t HAVE TO utilize the HTML Helper, I opted to just code it directly:

<select id=”@Model.ParameterFieldName” name=”@Model.ParameterFieldName” multiple=”multiple”>
@foreach(SelectListItem sli in Model.DataTypeSourceItems)
if (sli.Selected)
<option value=”@sli.Value” selected=”selected”>@sli.Text</option>
<option value=”@sli.Value”>@sli.Text</option>

Which produces the output

<select id=”Parameter2″ name=”Parameter2″ multiple=”multiple”>
<option value=”A”>Test A</option>
<option value=”B” selected=”selected”>Test B</option>
<option value=”C” selected=”selected”>Test C</option>

Exactly what I was looking for.

Just goes to prove that the HTML Helpers are there to help us, but they don’t necessarily ALWAYS help.


BTW: This is a good location for how to implement MultiSelect Drop Downs in General:


Leave a comment

XML Serialization with Inheritance and “new”

We were building an XML structure … we will call this a Rule and a DerivedRule.

We built simple classes to serialize or deserialize the XML.

At the basic level all that works fine … my DerivedRule will have everything my Rule has and the “Value” string.

The issue arose when we had multiple Rules or DerivedRules … We made a simple LIST classes following the same style:

In theory we would think this work work … RuleList was the base class and DerivedRuleList would just extend RuleList.  The problem was that we were extending the Rules property … but HIDING the base classes property using “new”

When we tried to deserialize this we would get the following error:


We were baffled for a while, because we were appropriately utilizing “XmlElement” as requested.  And the we read the error in far more detail … the Rules property was hiding the base class member’s Rules property.  We couldn’t just override it, and because the DerivedRuleList was using a List<DerivedRule> and the RulesList was using a List<Rule>.

After searching for a while, we didn’t find a solution and our final output was that we disconnected the inheritance on the DerivedRuleList and everything came up without issue.


Other attempts were made and some compiled just fine, but wouldn’t actually serialize or deserialize … and that was to make Rule and DerivedRule implement a common interface and then make a SINGLE RulesList with a property of List<IRule> Rules … and while that correctly compiles without any issue, serialization won’t work with an interface without much additional coding.


, , , ,

Leave a comment

Unable to Compress Files in Windows 10

Over the past few months, I haven’t been able to “zip” files … knowing that this was a normal thing back in Windows 7, I figured either Windows 10 REMOVED it or something is wrong.

Finally I really needed to send something zipped up … so I researched it … and found this result.  This worked perfectly.

Leave a comment

Passing “LIKE” Parameters To Fetch XML in SSRS Reports

Today I encountered a situation where I needed to do a LIKE lookup in the Account entity in Dynamics CRM 2013 in SQL Server Reporting Services.

I have a simple Fetch XML Query:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
     <entity name="account">
          <attribute name="name" alias="Name" />
          <filter type="and">
               <condition attribute="name" operator="like" value="@AccountName" />

The problem here is that I need to add “%”s to the condition to search for multiple items (i.e. the LIKE) … if I want to find any instances where the name has “aca” (to find any academy, academics, etc.) … my condition needs to be:

<condition attribute="name" operator="like" value="%" + @AccountName + "%" />

But that in itself doesn’t work … how can I get the “%”‘s into the query … don’t worry, there is a way.

1) Add a parameter to the SSRS Report as you normally would


2) Create a dataset and add a custom parameter to the dataset

– Name it whatever you would like, but set it to the value of an expression.  Make the expression look like this

="%" & Parameters!AccountName.Value & "%"


3) Use the “LIKE” parameter just created in your Fetch XML

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="true">
     <entity name="account">
          <attribute name="name" alias="Name" />
          <filter type="and">
               <condition attribute="name" operator="like" value="@AccountNameLike" />


At this point, test your work, and you should be able to use LIKE parameters in Fetch XML in SQL Server Reports Service Reports.

Leave a comment

Getting the Get FormType CRM 2011+

In CRM 4, we could call the form type very easily … CRM 2011+ isn’t very difficult either


CRM 2011+
var type = Xrm.Page.ui.getFormType();

Possible Form Types Returned

 0 – undefined
1 – Create
2 – Update
3 – Read Only
4 – Disabled
5 – Quick Create (being depreciated)
6 – Bulk Edit

Leave a comment

SharePoint Waiting for SP.js to Load

We spent our day here at my FT job trying to figure this our out … me a senior level .NET developer and two senior level SharePoint masters.

First we had nice newly created web part, running a jQuery based carousel of pictures.  Everything was working fine, until we launched it to our SharePoint 2013 publishing page.  SP 2013 Team Pages worked just fine, SP 2010 worked just fine, and edit mode of the SP2013 publishing page worked just fine … but when we moved it to Checked In and Published, literally the web part just stopped.

Also 3 hours later we found what was happening:

We were running the command:

ExecuteOrDelayUntilScriptLoaded(function () { myFunc(); }, "sp.js");

We wanted to make sure that “sp.js” was loaded BEFORE calling our “myFunc” call … well on publishing pages in SP 2013 … they have changed the function for this to

SP.SOD.executeFunc('sp.js', 'SP.ClientContext', myFunc);

Gosh … there is 3 hours lost on my day … jeepers; we made the switch and everything worked immediately

Leave a comment

Cast OData Date to Standard Javascript Date Time

Thank you to Rajeev Pentyala for this solution (link)

The CRM DateTime value is returned from an OData call as a Edm.DateTime … which is of format “/Date(1314763200000)/” … that’s really not of use to me in Javascript.

The following code (Rajeev developed) converts this really nicely;

dt = dt.replace(“/Date(“, “”);
dt = dt.replace(“)/”, “”);
var dateValue = new Date(parseInt(dt, 10));

Leave a comment