Usuário com melhor resposta
Html.ActionLink VS MasterPage - Nao reconhece

Pergunta
-
Ola pessoa
criei uma masterpage e adicionei o link <% Html.ActionLink("Home", "Index", "Home")%>, porem, ele nao reconhece o "Html.ActionLink" e em paginas normais, ele reconhece
o que devo importar?por que ocorre esse erro?
abs
obrigado
Carlos Eduardo Barbosa Analista de Sistema Business Intelligence WEB Intelligence
Respostas
-
Fala Carlos,
>> em MVC nao e possivel ter o codeBehind?
Sim, é possível, pois é possível utilizar (e até o MVC 2 era o padrão) a mesma View Engine do Web Forms (aspx). A partir do MVC 3 o padrão é o Razor, que não tem code-behind...
Mas é extremamente recomendável que não se faça uso de code-behind no MVC. Isso já foi discutido por aqui mesmo diversas vezes... Dá uma procurada que você vai achar as diversas razões... De cara, você não tem ViewState e PostBack, o que já injustifica complemamente o uso do code-behind...Com relação à sua master page, eu a principio desconfiei que pudesse ser o fato de a classe "Index" do seu code-behind estar herdando de System.Web.UI.MasterPage, e a View em si herdando de System.Web.Mvc.ViewMasterPage.
Mas resolvi testar aqui, copiei a sua Master (e o code-behind) e pra minha surpresa, não tomei nenhum erro... Os links apareceram numa boa, o intelisense reconheceu o Html.ActionLink...
Você criaou essa aplicação com o template ASP.NET MVC application? Ou está migrando uma aplicação Web Forms pra MVC? Aparentemente parece estar faltando alguma referência no seu projeto...
Forte abraço,
André Borges Medeiros
MCT, MCPD, MCTS
Procurando treinamento de ASP.NET MVC?
>> Se a resposta solucionar sua dúvida, favor Votar como Útil- Sugerido como Resposta Buzios quinta-feira, 23 de dezembro de 2010 15:46
- Marcado como Resposta André Borges MedeirosModerator sexta-feira, 1 de abril de 2011 21:12
Todas as Respostas
-
Fala,
Imagino que você deva ter digitado errado, mas ao invés de:
<% Html.ActionLink("Home", "Index", "Home") %>
deveria ser:
<%= Html.ActionLink("Home", "Index", "Home")%>
Ou seja, faltou o sinal de "=". Se não for isso, posta o código da Master aqui, porque deveria funcionar numa boa...
Forte abraço,
André Borges Medeiros
MCT, MCPD, MCTS
Procurando treinamento de ASP.NET MVC?
>> Se a resposta solucionar sua dúvida, favor Votar como Útil -
Blz andre?
entao, eu tentei desta forma e tambem nao funcionou, ele nao reconhece o comando mesmo
ate chegue a importar o nameSpace e fazer o caminho completo, mas mesmo assim ele nao reconhece
Meu masterPage
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Index.master.cs" Inherits="System.Web.Mvc.ViewMasterPage" %> <use namespace="System.Web.Mvc.Html" /> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <asp:ContentPlaceHolder ID="head" runat="server"> </asp:ContentPlaceHolder> </head> <body> <form id="form1" runat="server"> <div> <div id="menucontainer"> <ul id="menu"> <li> </li> <li><%= Html.ActionLink("Home", "Index", "Home", null, null)%></li> <li><%= Html.ActionLink("About", "About", "Home", null, null)%></li> </ul> </div> <asp:ContentPlaceHolder ID="cphMainContent" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>
BehindCode
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.Mvc; namespace PresentationWebLayer.Views.Shared { public partial class Index : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { } } }
abs
e obrigado
Carlos Eduardo Barbosa Analista de Sistema Business Intelligence WEB Intelligence -
Duas coisas me deixam intrigado:
- Sua masterpage ter um code behind
- Na sua masterpage dentro do body ter um form com runat=server
Mas mesmo assim, veja no seu web.config
Dentro da tag system.web veja se a tag pages está pelo menos parecida, poste aqui se puder.
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"> <namespaces> <add namespace="System.Web.Mvc"/> <add namespace="System.Web.Mvc.Ajax"/> <add namespace="System.Web.Mvc.Html"/> <add namespace="System.Web.Routing"/> </namespaces> </pages>
Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
Twitter: Me siga!!
Blog:http://dotnettime.wordpress.com/ -
-
Fala Carlos,
>> em MVC nao e possivel ter o codeBehind?
Sim, é possível, pois é possível utilizar (e até o MVC 2 era o padrão) a mesma View Engine do Web Forms (aspx). A partir do MVC 3 o padrão é o Razor, que não tem code-behind...
Mas é extremamente recomendável que não se faça uso de code-behind no MVC. Isso já foi discutido por aqui mesmo diversas vezes... Dá uma procurada que você vai achar as diversas razões... De cara, você não tem ViewState e PostBack, o que já injustifica complemamente o uso do code-behind...Com relação à sua master page, eu a principio desconfiei que pudesse ser o fato de a classe "Index" do seu code-behind estar herdando de System.Web.UI.MasterPage, e a View em si herdando de System.Web.Mvc.ViewMasterPage.
Mas resolvi testar aqui, copiei a sua Master (e o code-behind) e pra minha surpresa, não tomei nenhum erro... Os links apareceram numa boa, o intelisense reconheceu o Html.ActionLink...
Você criaou essa aplicação com o template ASP.NET MVC application? Ou está migrando uma aplicação Web Forms pra MVC? Aparentemente parece estar faltando alguma referência no seu projeto...
Forte abraço,
André Borges Medeiros
MCT, MCPD, MCTS
Procurando treinamento de ASP.NET MVC?
>> Se a resposta solucionar sua dúvida, favor Votar como Útil- Sugerido como Resposta Buzios quinta-feira, 23 de dezembro de 2010 15:46
- Marcado como Resposta André Borges MedeirosModerator sexta-feira, 1 de abril de 2011 21:12
-
Com relação à sua master page, eu a principio desconfiei que pudesse ser o fato de a classe "Index" do seu code-behind estar herdando de System.Web.UI.MasterPage, e a View em si herdando de System.Web.Mvc.ViewMasterPage.
Mas resolvi testar aqui, copiei a sua Master (e o code-behind) e pra minha surpresa, não tomei nenhum erro... Os links apareceram numa boa, o intelisense reconheceu o Html.ActionLink...
Tbm aqui funcionou perfeitamente.Contato:albertim_brasil@hotmail.com - Se ajudei, marca como útil.
Twitter: Me siga!!
Blog:http://dotnettime.wordpress.com/