2016-09-15 40 views
1

嗨,大家我有以下情况:我有一个视图,我有一个保存按钮,序列化表单并通过Ajax发送给JsonResult控制器。在这个JsonResult里面我添加/编辑数据库中的表。我的问题是如果有可能返回一个确认框到视图,如果存在一定的条件。贝娄是我的代码。 在预先感谢:)返回从控制器的JsonResult中的模式确认框如果条件

这是在我的看法,通过ajax发送表单数据到控制器的JavaScript。

<script> 
    function submitForm() { 
     $.ajax({ 
      type: 'POST', 
      url: '@Url.Action("UpdateEvent", "EventCalendar")', 
      data: $('#UpdateEventForm').serialize(), 
      success: function (eventoId) { 
       $('#modal-edit-event').modal('hide'); 
       $('#calendar').fullCalendar('refetchEvents'); 

      } 
     }); 
    } 

这是接收表单数据我的控制器的代码:

public JsonResult UpdateEvent(.........) 
{ 
    List<Guid> usersChanged = new List<Guid>(); 
    . 
    . 
    . 
    if(usersChanged.Count() > 0) 
    { 
    //Here is where i want to call a confirmation box 
    } 
    . 
    . 
    . 
    return Json(eventId, JsonRequestBehavior.AllowGet); 
} 

}

回答

0

是的,它是可能的。您所要做的就是返回需要在模式对话框中显示的HTML标记。

在这里,我使用的RenderRazorViewToString方法(从Ben Lesh's答案上Render a view as a string)现在

public string RenderRazorViewToString(string viewName, object model) 
{ 
    ViewData.Model = model; 
    using (var sw = new StringWriter()) 
    { 
     var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, 
                    viewName); 
     var viewContext = new ViewContext(ControllerContext, viewResult.View, 
             ViewData, TempData, sw); 
     viewResult.View.Render(viewContext, sw); 
     viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View); 
     return sw.GetStringBuilder().ToString(); 
    } 
} 

,你只需要调用此方法需要得到你的ViewResult的字符串版本

public ActionResult UpdateEvent() 
{ 

    if (SomeConditionHere) 
    { 
     var modalMarkup = RenderRazorViewToString("MyModalView", null); 
     return Json(new { status = "failed", data = modalMarkup }, 
                  JsonRequestBehavior.AllowGet); 
    } 
    return Json(new { status = "success", eventId = 123 }, JsonRequestBehavior.AllowGet); 
} 

假设您有一个名为MyModalView.cshtml的视图,该视图具有引导模式对话框所需的标记,如下所示

<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"> 
     <h2>Modal content</h2> 
    </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> 

确保您的ajax调用的成功事件回调方法正在检查返回的json数据并根据status属性值,根据需要使用data/eventId。

success: function (res) { 
    $("#myModal").remove(); 
    if (res.status === "failed") { 
     $('<div id="myModal" class="modal fade"><div class="modal-dialog" role="document">' 
       +res.data 
       +'</div></div>') 
      .modal(); 
    } else { 
     alert("eventId is : "+ res.eventId); 
    } 

} 
相关问题