2016-04-01 7 views
2

私の誤植は申し訳ありません。私はポストがなく、取得するときに2つのビュー間でデータを渡す必要がある概念証明C#ASP.NET MVCアプリケーションで作業しています。 1つのビューがモーダルダイアログを起動し、それらの間の通信が必要です。私たちはJQueryを使用しています。C#MVCビュー間にサブジェクトをサブミットしません。

データグリッドを持つCharges.cshtmlというビューがあります。データグリッドの最初の列は、 プロパティに応じてspan要素またはlink要素を持つことができます。これは、料金に1つまたは複数の説明があるかどうかを示します。ビューは以下のようになります。

Charges

料は、複数の記述のユーザーは、対応する記述リンク(この場合は説明2)をクリックし、モーダルダイアログが

今で

Multiple Descriptions

以下のような様々な記述を示す開きますされている場合このモーダルダイアログユーザは1つの説明を確認/選択します。今、私は、モーダルダイアログを閉じ、

Updated Description

以下のように選択した 担当の記述を更新する必要があり、ここで難しいのは、二つのビュー間でデータを渡す方法です。私はコントローラまたはJavaScriptを介してデータを渡すことは大丈夫です。

json serialize、ViewData、ViewBag、TempDataなどのLoanChargeコントローラーのCharges.cshtmlからLoadLoanChargeDescriptionsメソッドに選択した料金を渡すためにさまざまな方法を試しましたが、使用はできません。 int、string、floatなどの単純なデータ型を渡すことはできますが、オブジェクト全体を渡すことはできません。私はCurrentDescriptionとDescriptionsを私のコントローラに渡す必要があると感じています。彼らから私は他の部分に移動する必要があります。私は文字列のリストを渡そうとしましたが、コントローラーで0にカウントされているので、コントローラーにアクセスする方法がわかりませんでした。私はReview.js

@model ChargeViewModel 
@using (Html.FAFBeginForm()) 
{ 
    <div> 
      <table> 
       <tbody> 
       <tr >     
        //.....      
        <td> 
         @if(Model.IsMultipleMatch) 
         { 
          var loanCharge = Model as ChargeViewModel; 
          if (loanCharge.IsMultipleMatch == true) 
          { 
           //string vm = @Newtonsoft.Json.JsonConvert.SerializeObject(loanCharge);                    
           <span> 
            <a 
onclick="ShowMatchingDescriptions('@Url.Action("LoadLoanChargeDescriptions", "LoanCharge")','', '920','500')"> 
             @loanCharge.Description 
            </a> 
           </span>  
          }       
         } 
         else 
         { 
          <span>Model.Description</span> 
         } 

        </td> 
       </tr>      
       </tbody>  
      </table> 
    </div> 
} 

public class ChargeViewModel 
{ 
    public string Description {get;set;} 
    public bool IsMultipleMatch {get;set;} 
    public List<string> Descriptions {get;set;} 
} 

public class LoanChargeController 
{ 
    public ActionResult LoadLoanChargeDescriptions() 
    { 
     // get data here and pass/work on 
     return View("_PartialMultipleMatchPopup", null); 
    } 
} 

私のコードは

をスニペットについては下記を参照してください

(今のためだけにHelloテキストを追加しました) Charges.cshtml

複数の記述のUIのポップアップを開くことができています
function ShowMatchingDescriptions(popUpURL, windowProperties, w, h) { 
    try {     
     var left = (screen.width/2) - (w/2); 
     var top = (screen.height/2) - (h/2); 

     var properties = windowProperties + "dialogwidth:" + w + "px;dialogheight:" + h + "px;dialogtop:" + top + "px;dialogleft:" + left + "px;scroll:yes;resizable:no;center:yes;title:Matching Lender’s Fee;"; 
     $.when(
     window.showModalDialog(popUpURL, window, properties) 
     ) 
     .then(function (result) { 
      var childWindow = result; 
     }); 
    } 
    catch (err) { 
     alert("Error : " + err) 
    } 
} 

UPDATE 1

質問が更新され、詳細が掲載されました。

ありがとうございます。

UPDATE 2

リンクの下で私の解決策を参照してください。データを渡すためにあなたは、AJAXを使用していないのはなぜ

MVC pass model between Parent and Child Window

答えて

1

function ChargeViewModel() { 
     this.Description =''; 
     this.IsMultipleMatch =false; 

    } 

    var chargeViewModel= new ChargeViewModel(); 
    var data = JSON.stringify({ 'chargeViewModel': chargeViewModel }); 

    $.ajax({ 
     contentType: 'application/json; charset=utf-8', 
     dataType: 'html', 
     type: 'POST', 
     url: '@Url.Action("LoadLoanChargeDescriptions", "LoanChargeController")', 
     data: data, 
     success: function (result) { 
      //result will be your partial page html output 
     }, 
     failure: function (response) { 

     } 
    }); 

次に、あなたは、このようなコントローラに変更する必要があります。@Siva

+0

..私はあなたがクエリを持って知ってみましょう...あなたは...どのように – Ziggler

+0

を教えてくださいすることができ

public ActionResult LoadLoanChargeDescriptions(ChargeViewModel chargeViewModel) { // get data here and pass/work on return View("_PartialMultipleMatchPopup", null); } 

を@シヴァ。お元気で大変ありがとうございます。実際には私たちのアーキテクチャチームは私たちのフレームワークを変更しました。$ .ajaxは例外をスローして、私のReview.jsでShowMatchingDescriptions()を使用する必要があるのです。どうすればいいのか教えてください。 – Ziggler

+0

@Ziggler。 Sorry。私はReview.jsに慣れていません –

関連する問題