我是Web开发及其原则的新手,如果我的问题看起来不明确,那么道歉。
故事到目前为止......
我正在编写一个开源应用程序来学习ASP.NET MVC3。现在我正处于创建我的CRUD控制器的阶段,允许我创建一些新的类型。现在我已经创建了一个SiteAdmin控制器来保存我的仪表板,并且有一个View。视图将包含标签。我一直在学习如何使用以下博客文章和JQuery UI来处理标签
http://ericdotnet.wordpress.com/2009/03/17/jquery-ui-tabs-and-aspnet-mvc/
我决定使用AJAX示例来处理我的标签,我将索引参数传递给名为 AjaxGetTab 的Controller Action方法。此方法(根据博客文章)返回所需类型的部分视图。在部分视图中,有创建控制器操作方法,例如CreateTransactionType(HttpPost),用于创建新记录。
“停止胡言乱语是什么问题”
问题是,在Create方法完成后,我在视图选项卡中的列表不会刷新。此问题仅存在于IE9(仅我测试的IE)但 Chrome和Firefox工作,即列表刷新。
我已检查数据库记录是否存在。
我的代码在这里:
Dashboard.cshtml中的JQuery:
<script type="text/javascript">
$(document).ready(function() {
$("#tabs").tabs();
getContentTab (1);
});
function getContentTab(index) {
var url='@Url.Content("~/SiteAdmin/AjaxGetTab")/' + index;
var targetDiv = "#tabs-" + index;
var ajaxLoading = "<img id='ajax-loader' src='@Url.Content("~/Content")/ajax-loader.gif' align='left' height='28' width='28'>";
$(targetDiv).html("<p>" + ajaxLoading + " Loading...</p>");
$.get(url,null, function(result) {
$(targetDiv).html(result);
});
}
SiteAdminController AjaxGetTab方法:
/// <summary>
/// AJAX action method to obtain the correct Tab to use.
/// </summary>
/// <param name="index">Tab number</param>
/// <returns>Partial View</returns>
public ActionResult AjaxGetTab(int id)
{
string partialViewName = string.Empty;
object model = null;
//--Decide which view and model to pass back.
switch (id)
{
case 1:
partialViewName = "_TransactionType";
model = db.TransactionTypes.ToList();
break;
case 2:
partialViewName = "_DirectionType";
model = db.DirectionTypes.ToList();
break;
case 3:
partialViewName = "_UserType";
model = db.UserTypes.ToList();
break;
case 4:
partialViewName = "_CurrencyType";
model = db.CurrencyTypes.ToList();
break;
case 5:
partialViewName = "_tabError";
break;
}
return PartialView(partialViewName,model);
}
}
SiteAdminController CreateTransactionType方法:
[HttpPost]
public ActionResult CreateTransactionType(TransactionType model)
{
try
{
// TODO: Add insert logic here
if (ModelState.IsValid)
{
model.id = Guid.NewGuid();
model.RecordStatus = " ";
model.CreatedDate = DateTime.Now;
db.TransactionTypes.AddObject(model);
db.SaveChanges();
}
return RedirectToAction("Dashboard");
}
catch
{
return PartialView("_tabError");
}
}
答案 0 :(得分:1)
替换
$.get(url,null, function(result) {
$(targetDiv).html(result);
});
人:
$.ajax({
type: 'get',
url: url,
cache: false,
success: function(result) {
$(targetDiv).html(result);
}
});
问题是IE缓存了ajax请求,所以通过在设置中设置cache:false它应该可以工作。