Kyle Brown
Kyle Brown

Reputation: 303

How do I pass in postback argument from JS to VB?

I am trying to pass in an image from an image editor to a function in VB. I have it setup as the following:

JS

var canvas = document.getElementById("canvas_minipaint");
var img = canvas.toDataURL("image/jpeg");
__doPostBack('SaveImage', img);

ASPX

<asp:LinkButton ID="SaveImage" runat="server" Visible="true"></asp:LinkButton>

VB

Private Sub SaveImage_Click(sender As Object, e As EventArgs) Handles SaveImage.Click
    Call GetSession()
End Sub

When I click the SaveImage button right now i get the following error:

Invalid postback or callback argument. Event validation is enabled using in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

How do I register the onClick for the button for the validator? Or am I missing something else?

Upvotes: 1

Views: 317

Answers (2)

Cleptus
Cleptus

Reputation: 3541

I would suggest not disabling the EventValidation to avoid malicious users to mess with the form. You could store the data in an input hidden or override the page event and handle it.

protected override void RaisePostBackEvent(IPostBackEventHandler sourceControl, string eventArgument)
{
    if (sourceControl is yourControl)
        {
            //sanitize data
        }
}

Upvotes: 1

a--
a--

Reputation: 558

Turn off event validation for this page. You can turn it off at page level by adding

Page EnableEventValidation="false"

to the top of your .aspx page. I would recommend doing that in this case, since you are doing a manual postback using JavaScript. It is not possible to turn it off for individual controls.

EDIT:

You could always store the value of the image in a hidden field, and that would prevent the need to disable event validation. You'd need a way of storing the image data (base64 string maybe?) in the field, but it would work.

Upvotes: 1

Related Questions