如何在asp.net网站中同时使用C#代码和javascript函数

时间:2018-10-10 22:17:36

标签: javascript c# asp.net

我有一个ASP.NET网站,用户可以在其中打开ImageButton Web控件中的图片。然后,他们可以四处点击并获取两次点击之间的距离。随着用户不断单击,距离被添加到一个int变量total中。然后,可以通过按下asp.net按钮将此总和设置为Excel电子表格中活动单元格的值。

ImageButton的OnClientClick事件由JavaScript文件中的函数处理,并且变量分别对应于距离和总计。我选择在javascript中执行此操作,因为它很容易避免回发。设置ImageButton URL并将总数传递给Excel的Button OnClick事件在C#代码文件中处理。由于C#中的OnClick仅适用于回发,因此每次通过javascript函数进行更新时,总数都会传递给asp:HiddenField

在预设ImageButton URL且没有任何隐藏字段的情况下,javascript函数本身可以很好地工作(不进行回发)。但是,一旦我添加了C#代码并将javascript变量传递给它们相应的隐藏字段,就会发生回发,并且数据仍然丢失。

即使执行单独的OnClick事件,我如何确保javascript函数也无需回发即可执行?

这是JavaScript:

var pos1x = 0, pos1y = 0;
var pos2x = 0, pos2y = 0;
var distx = 0, disty = 0;
var redistx = 0, redisty = 0, newdist = 0;
var runtotal = 0;
var numClick = 0;

function Pic_Click() {
    numClick++;
    document.getElementById("labelcount").innerText = "Count: " + numClick;
    var rem = numClick % 2;
    if (rem == 1) {
        pos1x = event.pageX;
        pos1y = event.pageY;
    }
    else {
        pos2x = event.pageX;
        pos2y = event.pageY;
        distx = Math.abs(pos2x - pos1x);
        disty = Math.abs(pos2y - pos1y);
        redistx = Math.ceil(distx / 50);
        redisty = Math.ceil(disty / 50);
        newdist = Math.ceil(Math.sqrt(redistx * redistx + redisty * redisty));
        document.getElementById("labelrun").innerText = "Distance: " + newdist;
        total += newdist;
        document.getElementById("labeltotal").innerText = "Total: " + total;
    }
    return false;
}

每次更新总计时,我都会通过在 total + = newdist之后添加 document.getElementById('hiddenfield')。value = total; 来将其值传递给HiddenField。 / strong>。

使用C#方法打开图片:

protected void UploadIt(object sender, EventArgs e)
{
    //
    filename = Path.GetFileName(FileUpload1.FileName);
    fullpath = Path.Combine("~/Files/" + filename);

    ext = Path.GetExtension(fullpath);
    imgholder.ImageUrl = fullpath;      
}

Web控件在.aspx文件中创建:

<asp:ImageButton ID="imgholder" runat="server" OnClientClick="Pic_Click(); return false;" />
<asp:Button ID="Up" runat="server" Text="Upload" OnClick="UploadIt"/>
<asp:FileUpload ID="FileUpload1" runat="server" />

0 个答案:

没有答案