2016-05-23 93 views
0

我想在ajax按钮单击后在我的主视图中更新局部视图。我逐步浏览部分视图,模型具有正确的值。我将这些值存储在html中,以便将它们显示在主视图中。新值不显示。我想知道是否有人可以帮助我。MVC局部视图已更新但未在主视图中显示

视图模型:

namespace myApp.ViewModels 
{ 
    public class mrfResult 
    { 
     public string mrf { get; set; } 
     public string round { get; set; } 
     public string route { get; set; } 
     public string supplier { get; set; } 
     public string status { get; set; } 
     public string deadline { get; set; } 
    } 
} 

控制器:

[HttpPost] 
public ActionResult RFInfo(RfInfo pRfInfo) 
{ 
    List<mrfResult> newResult = new List<mrfResult>(); 
..... 
mrfResult nRow = new mrfResult(); 
nRow.mrf = pRfRow; nRow.round = pRfInfo.round; nRow.route = routeRow.ServiceId.ToString();nRow.supplier = supRow.name; nRow.status = statName; nRow.deadline = supRow.deadline.ToString(); 
newResult.Add(nRow); 
..... 
return PartialView("~/Views/RFMaster/_Partials/_GetRFDetails.cshtml", newResult); 
} 

管窥:

@model List<myApp.ViewModels.mrfResult> 

    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 
    <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 

    @section scripts { 
     <script src="~/Javascript/RFInfo.js"></script> 
    } 
    <div> 
     @{    
      string routeName = "(a - b)"; 
      string servId = ""; 

      if (Model != null) { 
       for (var i = 0; i < Model.Count; i++) 
       { 
        servId = Model[i].supplier; 
        break; 
       }     
      } 
     } 
     <span>@routeName</span><br /> 
     <span>@servId</span><br /> 
     <span>@routeName</span><br /> 
    </div> 

主视图:

@model List<myApp.ViewModels.mrfResult> 
    @{ 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
     } 

<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 
<script src="~/Scripts/multi-select/multiple-select.js"></script> 
<link href="~/Scripts/multi-select/multiple-select.css" rel="stylesheet" /> 
<link href="~/CSS/css_RFInfo.css" rel="stylesheet" /> 

@section scripts { 
    <script src="~/Javascript/RFInfo.js"></script> 
} 
@{ 
    int cnt = 0; 
} 
<body> 
    <div> 
     <h1>RF Information</h1> 

     ............ 

     <div class="contRfDetails"> 
      @Html.Partial("~/Views/RFMaster/_Partials/_GetRFDetails.cshtml") 
     </div> 
    </div> 
</body> 

Jquery的:

$(document).ready(function() { 
    $("#btnFind").click(function() { 
     var getRf = $("#ddlRf").val();  
     var getRound = $("#ddlRnd").val(); 
     var getRoute = $("#ddlRte").multipleSelect('getSelects').toString(); 
     var getSupp = $("#ddlSup").multipleSelect('getSelects').toString(); 
     var getStat = $("#ddlStat").multipleSelect('getSelects').toString(); 

     var params = { 
      'rf': getRf, 'route': getRoute, 'round': getRound, 'supp': getSupp, 'stat': getStat 
     }; 
     var json = JSON.stringify(params); 
     $.ajax({ 
      url: "../RFMaster/RFInfo", 
      type: "POST", 
      data: json, 
      cache: false, 
      async: true, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      traditional: true, 
      success: function (data) { 
       alert('Process Successful'); 
      }, 
      error: function() { 
       alert("Error") 
      } 
     }); 
    }); 
}); 
在主视图

当第一加载具有局部视图显示在div:

(一 - 二)

(一 - 二)

其是正确的。

按下'btnFind'按钮后,控制器的httppost动作结果函数被触发。该模型是针对jquery参数填充的。模型然后被发送到部分视图。在部分视图中对模型执行循环。其中一个值被检索(sup1)并存储在变量“servId”中。然后,该变量在范围'@servId
中分配。

在主视图中的div现在应该是这样的:

(A - B)

SUP1

(A - B)

但所有我恢复是来自视图的原始数据。

(一 - 二)

(一 - 二)

+0

我没有看到任何地方追加AJAX调用''

的结果的代码。在ajax调用的成功部分中,如果将'$('。contRfDetails')。append(data);' – Eric

回答

0

JS的应更新与来自控制器的数据的html元素。 更新脚本来自行:

*success: function (data) { 
      alert('Process Successful'); 
     },* 

success: function (data) { 
      $('.contRfDetails').html(data); 
     },