2010-01-01 5 views
2

Dans la vue Détails, je souhaite afficher une grille à partir d'une autre table. Comment l'appliquer mieux? Je suis en train de le faire dans une telle manière (erreur: ne peut pas convertir implicitement le type « vide » à « objet »):Comment transférer des paramètres en vue partielle dans ASP.NET MVC?

<%= Html.RenderPartial("~/Views/Appartament/Index.ascx", new { id = Model.blockhouse_id })%> 

Voici le code de détails voir:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<testMVC.Models.Blockhouse>" %> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Details</h2> 

     <p> 
      blockhouse_id: 
      <%= Html.Encode(Model.blockhouse_id) %> 
     </p> 
     <p> 
      name: 
      <%= Html.Encode(Model.name) %> 
     </p>  

     <p> 
      Appartaments: 
      <%= Html.RenderPartial("~/Views/Appartament/Index.ascx", new { id = Model.blockhouse_id })%> 
     </p>  

</asp:Content> 

Et le code du contrôleur Index.ascx:

public ActionResult Index(int blockhouse_id) 
     { 
      var _appartament = apt.GetBlockAppartaments(blockhouse_id).ToList(); 
      return View("Index", _appartament); 
     } 
+1

il y a quelque chose de mal avec definitly votre code, et je pense que vous confondez des vues et des contrôleurs. Votre tâche semble triviale, mais je pense que vous le faites mal. Découvrez le didacticiel sur les films sur http://asp.net/mvc/ –

Répondre

10

RenderPartial n'a pas de valeur de retour.

Au lieu de

<%= %> 

Utilisez

<% %> 

Quant au rasoir, au lieu de

@ 

Utilisez

@{ } 
+0

et n'oubliez pas le point-virgule dans Razor, comme je l'ai fait, qui n'a pas été récupéré par l'IDE! – Webbie4

Questions connexes