2016-12-15 78 views
0

有这样的任务。 我删除使用模态的异常处理

public ActionResult Delete(int? id) 
    { 
     if (id == null) 
     { 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     } 
     try { 
      TechnologicalCard technologicalCard = db.TechnologicalCards.Find(id); 
      db.TechnologicalCards.Remove(technologicalCard); 
      db.SaveChanges(); 
      return RedirectToAction("Index");    
     } 
     catch (Exception ex) 
     { 
      ViewBag.Error = true; 
      TempData["message"] = "someMessage"; 
      return RedirectToAction("Index"); 
     }   
    } 

我该怎么办时,一个异常去除模态中被抛出,出现了警告文字,这将是一个控制器的方法?

UPDATE

我添加索引方法

public ActionResult Index() 
    { 
     var id_Head = User.Identity.GetUserId(); 
     TempData["message"] = "someMessage"; 
     var technologicalCards = db.TechnologicalCards.Where(c => c.IdHeadDepartment == id_Head).ToList(); 
     return View(technologicalCards); 
    } 

我的观点有包含以下代码

@model IEnumerable<AccountingPlusProject.Models.TechnologicalCard> 

@{ 
ViewBag.Title = "Учёт+"; 
} 

<style> 
.md-form { 
    position: relative; 
    top: 40px; 
    width: 20%; 
    height: 20%; 
    text-align: center; 
} 

.img1 { 
    background-image: url("/Content/avatars/Head.jpg"); 
    background-repeat: no-repeat; 
    width: 7%; 
    height: 65px; 
    border-style: none; 
    margin-left: 90%; 
    margin-top: -8%; 
} 

.img2 { 
    width: 7%; 
    height: 65px; 
    border-style: none; 
    margin-left: 80%; 
} 

h2 span { 
    color: white; 
    font: bold 24px/45px Helvetica, Sans-Serif; 
    letter-spacing: -1px; 
    background: rgb(0, 0, 0); 
    background: rgba(0, 0, 0, 0.7); 
    padding: 10px; 
} 

.demo-card-wide.mdl-card { 
    width: 512px; 
} 

.demo-card-wide > .mdl-card__title { 
    color: #fff; 
    height: 176px; 
} 

.demo-card-wide > .mdl-card__menu { 
    color: #fff; 
} 

.container { 
    margin: 30px auto; 
    width: 85%; 
    height: 100%; 
} 

.warningMessage { 
    font-weight: bold; 
    color: Red; 
} 
</style> 
<script> 
$(function() { 
    if ($('#myModal').length) { 
     $('#myModal').modal('show'); 
    } 
}); 
</script> 



<nav class="navbar navbar-light teal lighten-4" style="height: 100px"> 
<div class="container"> 
    <div class="collapse navbar-toggleable-xs" id="collapseEx2" style="margin-top:-2%"> 
     <img src="~/Content/truelogo.png" style="margin-left:-10%" /> 
     @Html.ActionLink("Добавить технологическую карту", "Create", null, new { @class = "btn btn-success" }) 
     <img src="~/Content/avatars/Head.jpg" class="rounded-circle img-responsive img1"> 
     @Html.ActionLink("Отмена", "Index", "HeadDepartment", null, new { @class = "btn btn-danger", @style = "margin-left:100%; margin-top:-11%" }) 
    </div> 
</div> 
</nav> 

<div class="page-content"> 
<div class="container"> 
    @{int i = 1;} 
    <table> 
     @foreach (var item in Model) 
     { 
      if (i % 4 == 1) 
      { 
       <tr></tr> 
      } 
      <td> 
       <div class="card"> 
        <img class="img-fluid" src="@item.Image" alt="Card image cap"> 
        <div class="card-block"> 
         <center> 
          <hr /> 
          <h4 class="card-title">@item.NameProduct</h4> 
          <hr /> 
          @item.Description 
          <hr /> 
          @{ var materials = item.SelectedMaterials.ToList();} 

          @foreach (var material in materials) 
          { 
           @Html.DisplayFor(model => material.ReferenceMaterial.NameMaterial) <b>&nbsp;Штук:&nbsp;</b> 
           @Html.DisplayFor(model => material.CountMaterial) 
           <br /> 
          } 
          <br /> 
          <center> 
           @Html.ActionLink("Настроить материалы", "EditMaterial", new { id = item.IdTechnologicalCard }, new { @class = "btn btn-success" }) 
           <br /> 
           @Html.ActionLink("Настроить количество", "EditCountOfMaterial", new { id = item.IdTechnologicalCard }, new { @class = "btn btn-success" }) 
          </center> 
          <hr /> 

          @Html.ActionLink("Удалить", "Delete", new { id = item.IdTechnologicalCard }, new { @class = "btn btn-danger" }) 




         </center> 
        </div> 
       </div> 
      </td> 
           i++; 

           } 
    </table> 
</div> 
@if (TempData["message"] != null) 
{ 
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria- labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
       <h4 class="modal-title" id="myModalLabel">Modal title</h4> 
      </div> 
      <div class="modal-body"> 
       121212 <!--add your message here--> 
      </div> 
      <div class="modal-footer"> 
       <button type="button" class="btn btn-default" data- dismiss="modal">Close</button> 
       <button type="button" class="btn btn-primary">Save changes</button> 
      </div> 
     </div> 
    </div> 
</div> 
} 
</div> 

但是,当我删除重定向到索引视图,而不模式

+0

我对asp.net没有任何想法,但'bootstrap-modal'仍然想问一个好主意。你的应用程序或asp.net支持是否有休息方法? –

回答

0

异常处理我们ing the modal

正如您明确表示要在modal窗口中显示错误,您可以执行此操作。

您需要再次将此TempData数据分配到另一个TempData与您的Index方法中。由于TempData只从一个控制器到另一个控制器存在。

并将此代码添加到您的索引视图中。

@if (TempData["message"] != null) 
{ 
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> 
    <div class="modal-dialog" role="document"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <h4 class="modal-title" id="myModalLabel">Modal title</h4> 
     </div> 
     <div class="modal-body"> 
     @TempData["message"] <!--add your message here--> 
     </div> 
     <div class="modal-footer"> 
     <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
     <button type="button" class="btn btn-primary">Save changes</button> 
     </div> 
    </div> 
    </div> 
</div> 
} 

然后将此脚本添加到您的index.cshtml中。

$(function(){ 
if($('#myModal').length){ 
    $('#myModal').modal('show'); 
} 
}); 
+0

如何使用模态可以完成这样的事情? – Ovenvan

+0

@Ovenvan您需要在视图中添加@model YourModelType作为第一行,然后将相同的模型传递到您的视图中。但我不认为只是传递一个小信息使用模型是一个好主意 –

+0

不是模型和模态 – Ovenvan

0

您也可以使用模型状态字典传递错误消息。在这种情况下,您应该将相同的视图返回给用户而不是重定向,以便用户可以再次尝试该操作。

catch (Exception ex) 
{  
    ModelState.AddModelError(string.Empty,"Error! Try again."); 
    return View(); 
} 

现在确保您在视图中使用了验证帮助器方法,以便从模型状态字典中呈现错误消息。

@Html.ValidationSummary(false) 

采用这种方法,只有id将被传递回视图(从模型状态字典基本上都看过),你不把所有其他领域。如果您想要所有字段,请使用与您的视图强类型相同的视图模型作为方法参数。