Я новичок в веб-разработке и ее принципах, поэтому извиняюсь, если мой вопрос не кажется ясным.
Пока история ......
Я пишу приложение с открытым исходным кодом для изучения ASP.NET MVC3. Сейчас я нахожусь на этапе, когда я создаю свой CRUD-контроллер, чтобы позволить мне создавать несколько новых типов. Теперь я создал Контроллер SiteAdmin, который содержит мою панель инструментов и имеет представление. Представление будет содержать вкладок . Я изучал, как обрабатывать вкладки, используя следующую запись блога и JQuery UI
http://ericdotnet.wordpress.com/2009/03/17/jquery-ui-tabs-and-aspnet-mvc/
Я решил использовать пример AJAX для обработки моих вкладок, в результате чего я передаю параметр индекса в метод действия контроллера, называемый AjaxGetTab . Этот метод (согласно сообщению в блоге) возвращает частичное представление для требуемого типа. В частичном представлении есть Create Controller Action Method's, например, CreateTransactionType (HttpPost), который создает новые записи.
«Остановите вафлю, в чем проблема»
Проблема в том, что мой список на вкладке в представлении не обновляется после завершения метода Create. Эта проблема существует только в IE9 (только IE, который я тестировал) , но Chrome и Firefox работают, т.е. список обновляется.
Я проверил, что записи в базе данных существуют.
Мой код здесь:
JQuery в Dashboard.cshtml:
<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");
}
}