2016-04-01 6 views
2

Es tut mir leid für meine Tippfehler.Ich arbeite an Proof of Concept C# ASP.NET MVC-Anwendung, wo ich Daten zwischen zwei Ansichten übergeben müssen, wenn es keine Post und erhalten. Eine Ansicht startet einen modalen Dialog, und ich brauche eine Kommunikation zwischen ihnen. Wir verwenden JQuery.C# MVC Kein Submit Pass Objekt zwischen Ansichten

Ich habe eine Ansicht namens Charges.cshtml mit einem Datenraster. Die erste Spalte des Datagrids kann abhängig von einer Eigenschaft ein span-Element oder ein Verknüpfungselement aufweisen, das angibt, ob die Ladung einzelne oder mehrere Beschreibungen aufweist. Die Ansicht sieht wie folgt aus.

Charges

Wenn die Ladung hat Benutzer mehrere Beschreibungen der entsprechenden Beschreibung Link (Description2 in diesem Fall) klicken und ein modaler Dialog werden verschiedene Beschreibungen wie unten

Multiple Descriptions

Nun öffnen Sie zeigt in Dieser modale Dialogbenutzer bestätigt/wählt eine Beschreibung aus. Jetzt muss ich den modalen Dialog schließen und die Beschreibung ausgewählter Ladung wie aktualisieren unten

Updated Description

Der schwierige Teil hier ist, wie Daten zwischen zwei Ansichten zu übergeben. Ich bin in Ordnung, Daten über Controller oder über Javascript zu übergeben.

Ich habe verschiedene Möglichkeiten versucht, ausgewählte Ladung von Charges.cshtml zu LoadLoanChargeDescriptions-Methode in LoanCharge-Controller wie JSON serialize, ViewData, ViewBag, TempData und so weiter zu übergeben, aber nutzlos. Ich kann einfache Datentypen wie int, string, float, aber nicht ganzes Objekt übergeben. Ich glaube, ich muss CurrentDescription und Beschreibungen an meinen Controller weitergeben und von diesen muss ich zu anderen Stücken wechseln. Ich habe versucht, die Liste der Strings zu übergeben, konnte aber nicht sehen, wie man auf sie im Controller zugreift, da ich in meinem Controller als 0 gezählt wurde. Ich bin in der Lage Popup mehrerer Beschreibungen UI zu öffnen

Bitte siehe unten für meinen Code (für jetzt nur Hallo Text hinzugefügt) Schnipsel

Charges.cshtml

@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); 
    } 
} 

In Review.js

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

Ich habe meine Frage aktualisiert und weitere Details gepostet.

Vielen Dank im Voraus.

UPDATE 2

finden Sie auf folgenden Link für meine Lösung.

MVC pass model between Parent and Child Window

Antwort

1

Warum nutzen Sie nicht die AJAX für die Daten übergeben?

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) { 

     } 
    }); 

Dann müssen Sie diese den Controller wie ändern:

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

Lassen Sie mich wissen, dass Sie Fragen haben ..

+0

@Siva ... Können Sie mir bitte sagen, wie .. – Ziggler

+0

@ Siva..Vielen Dank für Ihre Hilfe. Kürzlich hat unser Architektur-Team Änderungen an unserem Framework vorgenommen und $ .ajax hat eine Exception geworfen, weshalb ich ShowMatchingDescriptions() in meiner Review.js verwenden muss. Können Sie mir bitte sagen, wie kann ich das tun – Ziggler

+0

@Ziggler. Sorry.Ich bin nicht vertraut mit Review.js –