2013-07-18 108 views
0

我添加/编辑下面的代码应该重定向回我的索引行动,但它似乎没有太多,它只是停留在相同的状态。RedirectToAction似乎并不奏效

更新功能运行(我已经通过调试检查),那么它应该在目前的对话只是停留返回,没有对话和更新数据的索引视图和数据表中没有更新。

任何人都知道什么是错的?我也运行在其上的捕获过,没有什么我可以看到有两种,只是似乎无法返回视图回:

[HttpPost] 
public ActionResult AddEditRecord(tblEquipment Equipment, string cmd) 
{ 
    if (ModelState.IsValid) 
    { 
     switch (cmd) 
     { 
      case "Add": 
       try 
       { 
        db.tblEquipments.Add(Equipment); 
        db.SaveChanges(); 
        return RedirectToAction("Index"); 
       } 
       catch { } 
       break; 
      case "Update": 
       try 
       { 
        tblEquipment Item = db.tblEquipments.Where(m => m.ID == Equipment.ID).FirstOrDefault(); 
        if (Item != null) 
        { 
         Item.AssetNo = Equipment.AssetNo; 
         Item.MachineName = Equipment.MachineName; 
         db.SaveChanges(); 
        } 
        return RedirectToAction("Index"); 
       } 
       catch { } 
       break; 
      } 
     } 

     if (Request.IsAjaxRequest()) 
     { 
      return PartialView("_AddEdit", Equipment); 
     } 
     else 
     { 
      return View("AddEdit", Equipment); 
     } 
    } 
} 

编辑: 我把返回在函数的一开始(以下),它只是忽略它并更新了表格!

public ActionResult AddEditRecord(tblEquipment Equipment, string cmd) 
{ 
    return RedirectToAction("Index"); 
    if (ModelState.IsValid) 

编辑2: 好吧我认为这可能是ajax问题。

this question

我chstml寻找产生以下表格,我需要添加return false来了吗? CSHTML

@using (Ajax.BeginForm("AddEditRecord", "UserEquipment", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "equipmentDialog" })) 

生成HTML

<form id="form0" action="/UserEquipment/AddEditRecord/752" method="post" data-ajax-update="#equipmentDialog" data-ajax-mode="replace" data-ajax-method="POST" data-ajax="true" novalidate="novalidate" jQuery18206614934889497519="43"> 
+0

你尝试把一个断点这一复位线? 也许以前有例外吗? – Ofiris

+0

在你的空'catch'语句中放置一个断点。 – CodeCaster

+0

只是把'return RedirectToAction(“Index”);'在开始工作吗? – Ofiris

回答

2

排序!

我修改了AJAX选项按照以下,现在它工作成功地

<script> 
    function onSuccess() { 
     window.location.href = '@Url.Action("Index","UserEquipment")' 
    } 
</script> 


@using (Ajax.BeginForm("AddEditRecord", "UserEquipment", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "equipmentDialog", OnSuccess="onSuccess()" })) 
+0

当然,您不能从AJAX调用的结果中重定向页面。你可以让'Add'或'Edit'方法返回所创建或编辑模型的'Details'视图(或者如果你愿意的话只返回'Index'),这样就可以填充'AjaxOptions.UpdateTargetId'标识的元素。 。 – CodeCaster