为什么我的Ajax.BeginForm会在我专门针对替换ID时重新加载整个页面?

时间:2012-07-22 16:32:35

标签: ajax asp.net-mvc-3

提前为这个问题道歉,但虽然我在这里找到了很多建议,但没有一个对我有用。我感觉很疯狂,所以...

我有一个MVC 3应用程序,当它第一次加载时,会显示包含所有用户的模型数据的表。那部分工作正常。我有两个文本框,一个用于帐户ID,另一个用于用户,允许我重新查询数据库以获取更具体的用户数据。当我使用提交按钮时,我将数据恢复,但整个页面刷新,并且当我使用正确的数据返回表单和表格时,页面的其余部分为白色。我以前没有任何图形或任何东西。另一个有趣的事情是,如果我再次从白页提交表单,无论有效参数如何,AJAX都能正常工作。我很困惑。

表格如下:

@using (Ajax.BeginForm("TaskList", "Dispatch", 
       new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "tblBody", 
       InsertionMode = InsertionMode.Replace }, new { id = "frmTaskList" }))
{
    <table id="tblTaskList" class="tblTaskList"> 
        <thead>
            <tr>
                <th>Ticket ID</th>
                <th>Date</th>
                <th>Customer Name</th>
            </tr>
        </thead>
        <tbody id="tblBody" class="tblBody">        
            @{for (var ix = 0; ix < Model.Value.Count - 1; ix++)
            { 
                <tr id="@(Model.Value[ix].TicketId)">
                    <td>@Model.Value[ix].TicketId</td>
                    <td>@Model.Value[ix].Created</td>
                    <td>@Model.Value[ix].ContactName</td>
                </tr>        
            }}
        </tbody>       
    </table>    

    <input type="text" id="hidAccId" name="hidAccId" value="" />
    <input type="text" id="hidUserId" name="hidUserId" value="" />
    <input type="submit" id="btnTaskList" value="Submit" />
}

我正在使用的脚本放在页面顶部:

<script src="../../Scripts/jquery-ui-1.8.11.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.unobtrusive-ajax.js" type="text/javascript"></script>

附注:我尝试使用@ Url.Content而不是src属性无济于事。我也尝试过使用以下内容,但没有不同的结果:

<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript">    </script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>

1 个答案:

答案 0 :(得分:1)

你有两次引用jQuery和jQuery-ui。这不是必需的。以下应该足够了:

<script src="@Url.Content("~/Scripts/jquery-1.7.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

你显然应该确保在Scripts文件夹中存在jquery-1.7.2.min.js。开箱即用的ASP.NET MVC 3只带有jQuery 1.5。就Microsoft *脚本而言,忘记这些,它们不再在ASP.NET MVC 3中使用。

此外,您的表单中没有提交按钮。

此:

<input type="button" id="btnTaskList" value="Submit" />

应该是:

<input type="submit" id="btnTaskList" value="Submit" />

如果您希望表单提交发生。