我的 MVC 4 站点使用 jQuery Ajax 来更新站点的部分内容,并且我的站点主要用于修改底层 SQL 数据库中的信息。我的问题是,即使在本地运行服务器,服务器也不会随机返回 PartialView。
我在 Windows 8 上使用 Visual Studio 2012,并在 Azure 平台上运行服务器。
我应该改写关于服务器不返回它的部分,因为在 19 秒后,客户端重试获取数据,它通常会成功,但它会返回两次(仅呈现一次),并且每次返回都包含相同的数据(如它应该)。尽管该站点仍然有效,但 19 秒的延迟是问题所在。
- /Trace.axd 没有显示任何问题,除了 19 秒的等待和状态码 200。
- 数据库连接运行良好,服务器到达代码末尾,将 PartialView 返回给渲染器。
- 尝试通过浏览器中的链接直接调用 PartialView 也会出现同样的问题。
- 它平均每 20 次调用发生一次(至少在我在本地测试时)。
- Chrome 开发者工具显示它获取了 13 个字节的数据(我假设是标头),然后等待 19 秒,最后两次接收到完整数据。
我的想法是,要么我的配置存在潜在问题,要么返回 PartialViews,尽管大多数情况下该站点运行良好。
如果我能对调试此错误的下一步行动有所了解,或者对问题提出一个好的理论,那就太好了。
最亲切的问候
迈克尔 (D3vinno)
来自控制器的示例代码
public ActionResult _List_Product() {
Database db = new Database(Session["database"] as string);
db.Connect();
DataTable dataTable = null;
using (SqlCommand command = db.GetSqlConnection().CreateCommand()) {
command.CommandText = string.Format("SELECT [product].[id], [product].[title] FROM [product]");
SqlDataReader sdr = command.ExecuteReader();
dataTable = new DataTable { TableName = "product" };
if (sdr != null) {
dataTable.Load(sdr);
}
}
db.Close();
return PartialView(dataTable);
}
和示例视图
@model System.Data.DataTable
@{
string type = "_Product";
}
<p>
<button class="btn span8" onclick="SetContent('@type', 'new')">New</button>
</p>
<table class="table row-fluid table-condensed" data-provides="rowlink">
@foreach (System.Data.DataRow item in Model.Rows) {
<tr id="show-@item["id"]">
<td id="search-@item["id"]">
<b> @item["title"] </b>
</td>
<td>
<button class="btn pull-right" onclick="SetContent('@type',@item["id"])">Edit</button>
</td>
</tr>
}
</table>