2016-05-23 14 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ロード:

( - B)

( - B)

正しい。

「btnFind」ボタンを押すと、コントローラのhttppostアクション結果関数が起動します。 jqueryパラメータに対してモデルが作成されます。モデルは部分ビューに送られます。部分ビューでモデルに対してループが実行されます。値の1つが検索され(sup1)、変数 'servId'に格納されます。その変数は、スパン '@servId
内に割り当てられます。

メインビューでdiv要素は次のようになります。

( - b)の

SUP1

( - b)の

しかし、私は戻って取得していますすべてをビューから元のデータです。

( - B)

( - B)

+0

には、私はどこにも ''

へのAJAX呼び出しの結果を追加したコードが表示されません。 ajax呼び出しの成功セクションでは、 '$( '。contRfDetails')。append(data);' – Eric

答えて

0

JSは、コントローラからのデータを持つHTML要素を更新すべきです。 Updateからスクリプトの行:

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

success: function (data) { 
      $('.contRfDetails').html(data); 
     }, 
関連する問題