Custom Model Binding in MVC

Some times we have to use our own Modal binding mechanism in MVC. In MVC default Modal binding machansim is perfect. It binds our modal to posted variables . We can create our custom Modal binder. We can use DefaultModalBinder Or IModalBinder to do that. In following video you can find Custom ModalBinder Using IModalBinder.

Custom Modal Binder in MVC

Download Source Code


Reading excel file in c#

Some times Reading Excel files can be bit cumbersome. I needed to allow user to upload excel document and read data from excel file. So I followed following way to get it done.

private void button1_Click(object sender, EventArgs e)
DataSet ds = new DataSet();
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
Excel.Range range;

xlWorkBook = xlApp.Workbooks.Open(Application.StartupPath + "\\sample.xlsx", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);

range = xlWorkSheet.UsedRange;

// read data and bind to grid view
System.Data.DataTable dt = new System.Data.DataTable("dtExcel");
DataRow dr;
StringBuilder sb = new StringBuilder();
int jValue = xlWorkSheet.UsedRange.Cells.Columns.Count;
int iValue = xlWorkSheet.UsedRange.Cells.Rows.Count;
for (int j = 1; j <= jValue; j++)
dt.Columns.Add("column" + j, System.Type.GetType("System.String"));

for (int i = 1; i <= iValue; i++)
dr = ds.Tables["dtExcel"].NewRow();
for (int j = 1; j <= jValue; j++)
range = (Microsoft.Office.Interop.Excel.Range)xlWorkSheet.Cells[i, j];
string strValue = range.Text.ToString();
dr["column" + j] = strValue;

dataGridView1.DataSource = ds.Tables[0];
xlWorkBook.Close(true, null, null);

// release object

private void releaseObject(object obj)
obj = null;
catch (Exception ex)
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());

Download source files

Video tutorial

Difference between == and === in JavaScript

So we know in javascript we have == and === comparisons. Why two? What are the differences between them?

So what is the difference between followings

'1' == 1

this returns true.

when it comes === equals

'1' === 1

this returns false.

So what it is?

The triple-equals comparator compares both type and contents

So ‘1’ === 1 contains string value and int value. Even contents are same they are in different types. So it is not equals.

Double equals tries to help with type coercion. But it’s not always the help we want. So keep in mind when you are using above equal comparisons.

format currency in jquery

So when we are in web development we want show Currency value with some formatting. Like thousand separator, decimal separator and currency symbol.

I am using below Jquery function to format the currency values.

function formatCurrency(value, decimals, decpoint, separator, symbol) {
decimals = (typeof decimals == 'undefined' ? 2 : decimals);
decpoint = (typeof decpoint == 'undefined' ? '.' : decpoint);
separator = (typeof separator == 'undefined' ? ',' : separator);
symbol = (typeof symbol == 'undefined' ? '$' : symbol);

var parts = value.toFixed(decimals).toString().split(decpoint);
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, separator);

return (symbol + parts.join(decpoint)).toLocaleString();

We can format currency value as we required. If we just pass the currency value it will give us value with default formatting.

formatCurrency(5873839) will give us ” $5,873,839.00″

reading xml in sql server

So some times we want to read xml file in sql server. I am passing list of details to sql server using xml file format. It reduce several db calls when we passing list of data.

Suppose we have List of Students. In List of Student we have to loop it and fire db calls to save data. To overcome this I create xml of List of Student and Pass it to sql server with one db call and then in my stored procedure I will handle those data as follow.


SET @Xml = '<ArrayOfStudent xmlns:xsi="" xmlns:xsd="">
<LastName>JLast name</LastName>
<LastName>johnLast name</LastName>

INTO #Temp
FROM OPENXML(@HDoc, '/ArrayOfStudent/Student', 1)
[Id] INT 'Id',
[FirstName] VARCHAR(400) 'FirstName',
[LastName] VARCHAR(400) 'LastName'


SELECT  *  FROM  #Temp

xml reading