none
Passar model para @Html.Partial RRS feed

  • Pergunta

  • Olá,

    tem como a partir de uma view aonde eu tenho um model, chamar um @Html.Partial e usar este model neste Partial.

    @model ERP.Models.EPIGrupo
    
    
    @{
        ViewBag.Title = "Detalhar";
    }
    
    <h2>Detalhar</h2>
    
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.Sigla):</div>
            <div class="coluna_rotulo_centro" style="width:250px">@Html.DisplayFor(m => m.Sigla, new { style = "width:250px;" })</div>        
        </div>    
        
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.Descricao):</div>
            <div class="coluna_rotulo_centro" style="width:250px">@Html.DisplayFor(m => m.Descricao, new { style = "width:250px;" })</div>        
        </div>    
       
        @Html.Partial("_Detalhar", model)

    E o partial está assim:

    @model ERP.Interface.IEntidadeBase
    
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.EmpresaID):</div>
            <div class="coluna_rotulo_centro" style="width:250px">@Html.DisplayFor(m => m.EmpresaID, new { style = "width:250px;" })</div>        
        </div>    



    Abs


    Marlon Tiedt
    www.sesmt.com.br


    • Editado Marlon Tiedt quarta-feira, 27 de junho de 2012 11:27
    quarta-feira, 27 de junho de 2012 11:24

Respostas

  • Marlon adiciona esse RenderPartial onde você queira que o codigo seja renderizado.

    tipo

    <div id="content">

          @Html.RenderPartial(...)

    </div>

    Pense que o renderPartial seja um "include" 


    Não esqueça de marcar o post como útil caso tenha te ajudado.


    • Editado Marco Souza quarta-feira, 27 de junho de 2012 12:16
    • Marcado como Resposta Marlon Tiedt quarta-feira, 27 de junho de 2012 14:23
    quarta-feira, 27 de junho de 2012 12:16
  • Então Marlon, você passa o model normalmente:

    @{
            Html.RenderPartial("_Detalhar", Model.ClasseQueImplementaIEntidadeBase);       
        }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Marcado como Resposta Marlon Tiedt quarta-feira, 27 de junho de 2012 14:23
    quarta-feira, 27 de junho de 2012 13:55

Todas as Respostas

  • Sim Marlon:

        @{
            Html.RenderPartial("DetalhesDoProduto", new Product());
        }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 27 de junho de 2012 11:57
  • Murilo, aonde eu colocaria este código que você passou?

    Atenciosamente


    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 27 de junho de 2012 12:11
  • Marlon adiciona esse RenderPartial onde você queira que o codigo seja renderizado.

    tipo

    <div id="content">

          @Html.RenderPartial(...)

    </div>

    Pense que o renderPartial seja um "include" 


    Não esqueça de marcar o post como útil caso tenha te ajudado.


    • Editado Marco Souza quarta-feira, 27 de junho de 2012 12:16
    • Marcado como Resposta Marlon Tiedt quarta-feira, 27 de junho de 2012 14:23
    quarta-feira, 27 de junho de 2012 12:16
  • Marcon, é como o Marco falou.. você coloca na sua view na parte que quiser.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 27 de junho de 2012 12:19
  • Já tentei desta maneira:

     @Html.RenderPartial("_Detalhar", new ERP.Models.EPIGrupo());

    E desta maneira:

     @Html.Partial("_Detalhar", model)

    E usei a minha partial conforme acima e retorna o erro:


    Server Error in '/' Application.


    Compilation Error

    Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

    Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

    Source Error:
    Line 18:     </div>    
    Line 19:        
    Line 20:     @Html.RenderPartial("_Detalhar", new ERP.Models.EPIGrupo());
    

    Source File: j:\C#\ERP\ERP\Views\EPIGrupo\Detalhar.cshtml    Line: 20 

    Abs


    Marlon Tiedt
    www.sesmt.com.br



    • Editado Marlon Tiedt quarta-feira, 27 de junho de 2012 12:29
    quarta-feira, 27 de junho de 2012 12:28
  • Marlon, você deve usar o RenderPartial com @{}:

    @{
    	Html.RenderPartial("_Detalhar", new ERP.Models.EPIGrupo());
    }

    e não:

    @Html.RenderPartial("_Detalhar", new ERP.Models.EPIGrupo());


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 27 de junho de 2012 12:38
  • Agora parou de dar o erro, porém os dados no RenderPartial estão todos zerados..Pq será?

    Abs


    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 27 de junho de 2012 13:14
  • Porque você está passando um new obj, hehehe.

    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    quarta-feira, 27 de junho de 2012 13:16
  • É que nas respostas acima estavam para passar assim...huahuaha...

    Mas fiz assim:

        @{
            Html.RenderPartial("_Detalhar");       
        }


    E no RenderPartial fiz assim:

    @model ERP.Interface.IEntidadeBase
               
    
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.EmpresaID):</div>
            <div class="coluna_rotulo_centro" style="width:250px">@Html.DisplayFor(m => m.EmpresaID, new { style = "width:250px;" })</div>        
        </div>    
    
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.DtCad):</div>
            <div class="coluna_rotulo_centro" style="width:250px">@Html.DisplayFor(m => m.DtCad, new { style = "width:250px;" })</div>        
        </div>    
    
        <div class="linha">
            <div class="coluna_rotulo_centro" style="width:125px">@Html.LabelFor(m => m.UsuCad):</div>
            <div class="coluna_rotulo_centro" style="width:250px">@Html.DisplayFor(m => m.UsuCad, new { style = "width:250px;" })</div>        
        </div>    

    E funcioinou...mas ainda quero fazer funcionar como fazer funcionar para passar o model...mas não consegui...ahuahua...

    Abs...


    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 27 de junho de 2012 13:37
  • Outra coisa, já que estou falando de View, tem algum jeito na View chamar alguma função/procedure passando um inteiro e ele retornar um texto?

    Tem como?

    Abs


    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 27 de junho de 2012 13:53
  • Então Marlon, você passa o model normalmente:

    @{
            Html.RenderPartial("_Detalhar", Model.ClasseQueImplementaIEntidadeBase);       
        }


    http://www.linkedin.com/pub/murilo-kunze/44/191/455

    • Marcado como Resposta Marlon Tiedt quarta-feira, 27 de junho de 2012 14:23
    quarta-feira, 27 de junho de 2012 13:55
  • O que você deseja fazer, pois o interessante é não envolver regras na View.


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    quarta-feira, 27 de junho de 2012 14:07
  • Sim, depois me toquei...pois ainda estou acostumado com o mundo EXE e não MVC.

    O que eu quero tem que ser um propriedade da classe que estou tratando. A forma que ela vai ser tratada é outra coisa, e tem que retornar corretamente na tela.

    Valeu pessoal...

    Funcionou...

    Abs


    Marlon Tiedt
    www.sesmt.com.br

    quarta-feira, 27 de junho de 2012 14:22