2016-05-23 88 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); 
     },