当从具有主文件的aspx文件调用时jQuery代码不起作用

时间:2015-07-13 17:19:10

标签: javascript c# jquery html asp.net

我创建了一个空白的asp.net表单网站。我已经使用default.aspx页面并使用

中的代码替换了默认代码

https://blueimp.github.io/jQuery-File-Upload/jquery-ui.html

所以它看起来像

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
HTML / Javascript from the link above. 
</asp:Content>

如果我删除主文件内容并只粘贴页面内容就可以完美地运行。所以出于某种原因

当我点击添加文件并浏览文件时,页面上没有显示文件,但是当我没有主文件时,它会显示正常。

我知道这不是很好的调试信息。如果有人知道一个好的方法,我甚至冷调试这将是伟大的。

如果我猜测出现以下代码是导致错误的原因。

<script id="template-upload" type="text/x-tmpl">
{% for (var i=0, file; file=o.files[i]; i++) { %}
      {% console.log(file.name); %}
    <tr class="template-upload fade">
        <td>
            <span class="preview"></span>
        </td>
        <td>
            <p class="name">{%=file.name%}</p>
            <strong class="error"></strong>
        </td>
        <td>
            <p class="size">Processing...</p>
            <div class="progress"></div>
        </td>
        <td>
            {% if (!i && !o.options.autoUpload) { %}
                <button class="start" disabled>Start</button>
            {% } %}
            {% if (!i) { %}
                <button class="cancel">Cancel</button>
            {% } %}
        </td>
    </tr>
{% } %}
</script>

当我通过浏览器查看html时,当我使用主文件加载时,页面中缺少以下表单

<form id="fileupload" action="sendfiles" method="POST" enctype="multipart/form-data">

2 个答案:

答案 0 :(得分:1)

在处理ASPX时,从不在javascript中使用原始html id,你需要通过查找真实的id,

<script>
    var controlId = '<%= this.SomeControl.ClientId %>'
    var things = $(controlId);
</script>

&lt;%= ...%&gt;逻辑是一个ASPX表达式,服务器端的aspx引擎会看到它并将其转换成你要求它的响应。

答案 1 :(得分:0)

现在你已经找到了丢失的表格 - Asp.Net webforms不允许使用多个元素。这是webforms带来的烦恼,但是在这里的第一个答案中可以找到一些解决方法,以及对该问题的良好讨论: Can we use multiple forms in a web page?

上一个答案 - 在浏览器中查看生成的HTML的来源(F12)。我猜测,在可用的信息很少的情况下,您在jQuery中定位的元素的ID正在母版页的子节点中进行更改。