 <p>The problem was a bit tricky but I manage to solve it.</p> <p>The fact is: <em>if a real postback is not executed</em> (responding with a file is not considered so) the value <em>is still considered "changed"</em>.</p> <p>The only way to solve this problem seems to be "resetting" manually the value of the hiddenfield.</p> <p>I came up with this:</p> <pre><code>self.getExcel = function (stringBase64) { $("#hiddenFiedlName").val(stringBase64); __doPostBack(); $("#hiddenFieldName").val(""); } </code></pre> <p>After the postback the value is restored to the initial one (which is always the empty string). By doing this the "ValueChanged" event is not triggered.</p> <p>As stated in the comment of jbl the <code>change()</code> was useless (please refer to his comment in the question).</p>