2014-07-18 4 views
0

Rapport Commodity Voir:Null Valeur Passage de l'affichage au contrôleur

@model PMEX.CSR.Models.ReportModel 
    @{ 
    ViewBag.Title = "Commodity Report"; 
    } 

    <div> 
    <table> 
     <tr> 
      <td> 
       @{ 
        if (Model != null) 
        { 
        @Html.ActionLink("Download PDF Report", "DownloadReportPDF", Model); 
        } 
       } 
      </td>    
     </tr> 
    </table> 
    </div> 

Rapport du contrôleur cs fichier:

public ActionResult DownloadReportPDF(ReportModel model) 
    { 
     // to do some stuff 
     return View("Commodity"); 
    } 

Rapport modèle

public class ReportModel 
    { 
    public string testValue { get; set; } 

    public DataTable dt { get; set; } 
    public LikeFilterModel LikeFilterModelObj { get; set; } 
    // [Required] 
    // public string SearchText { get; set; } 
    public GridModels GridDataModel { get; set; } 
    /// <summary> 
    /// Represents that datagrid has rows in it. 
    /// </summary> 
    public bool isValue { get; set; } 
    } 

Mon modèle quand je reçus sur la vue

Modèle que je reçois sur le contrôleur via le lien d'action.

Comme vous pouvez le voir tout ce que je réception sur le contrôleur est nulle. S'il vous plaît dites-moi ce qui ne va pas ici?

Je souhaite transmettre le même modèle au contrôleur que j'ai reçu sur View.

+0

S'il vous plaît voir ma réponse ci-dessous et commentaires expliquant ... – Beakie

Répondre

0

Vous ne pouvez pas transmettre des données au contrôleur de cette manière, toute donnée provenant d'une vue doit être POSTée ou transmise dans la chaîne de requête, par ex.

if (Model != null) 
{ 
    @using (Html.BeginForm("DownloadPDFReport", FormMethod.Post)) 
    { 
     @Html.HiddenFor(x => x.Property1) 
     @Html.HiddenFor(x => x.Property2) 
     ... 
     <input type="submit" value="Download PDF Report" /> 
    } 
} 
+0

Il n'est pas * nécessaire * pour être affiché. Il peut être passé en tant que paramètres QueryString en tant que GET. –

+0

Passer le modèle sous la forme d'un objet de valeur de route PEUT renvoyer les valeurs d'origine au contrôleur dans le cadre d'un GET. – Beakie

+0

@ErikPhilips Oui, je regardais le modèle et je me suis rendu compte qu'il n'y avait probablement aucun moyen pour un GET de fonctionner dans cet exemple. – James

1

Html.ActionLink attend d'avoir routeValues au lieu de votre modèle d'objet. Vérifiez la référence here.

...

+0

j'ai essayé ceci mais DataTable est encore nul –

+0

@ShujaatSiddiqui: Qu'avez-vous essayé? – Ksv3n

+0

Ceci explique le problème, mais ne le résout pas. –

Questions connexes