What I do is if Null then string.Empty coming from the database and reverse it going back Param=null when it is string.empty. For numbers I do the same concept with the .MinValue function.
Within the stored procedure I do the following withing the where clause.
Where (@stringParam is null or column = '%' + @stringParam + '%')