Adicionar programas no MVC
estou a começar com a primeira aplicação de MVC. Aqui tenho a confusão básica. Na verdade, o _Layout por omissão.ficheiro cshtml criado como por baixo
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
<script>
</script>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
</body>
</html>
usei o modelo básico para não ter nenhum modelo. Mas verifica os ' @Scripts.Desenhar ("~/bundles/jquery")' linha. É depois do @RenderBody (). Na verdade, adiciona-se depois da secção do corpo.
Acho que esta é a melhor prática. Mas se eu adicionar $.(documento).pronto mostra o seguinte erroMicrosoft JScript erro de execução: '$ ' está indefinido
baseado no erro, ele por causa da tag script. Acabei de mudar os '@Scripts'.Desenhar ("~/bundles/jquery")' linha antes de @Render o corpo e a página final como
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
</head>
<body>
<script>
</script>
@RenderBody()
@RenderSection("scripts", required: false)
</body>
</html>
o pedido funciona bem com o meu jquery.
Então porque é que isto aconteceu? Então, o programa que adiciona a marca precisa sempre antes do @RenderBody ? Então porque é que o modelo predefinido aparece na localização errada?3 answers
Isto provavelmente acontece porque você está adicionando os scripts antes da referência jQuery na página. Precisa de escrever programas dentro da Secção scripts
nas suas vistas:
@section scripts {
//stuff
}
Isto irá certificar-se de que será renderizado após a referência jQuery(RenderSection
chamada).
O JQuery deve estar na cabeça e quaisquer scripts personalizados que escreva devem estar no fundo depois do corpo.
Isto é porque se você usar qualquer jQuery em seu corpo e não está envolto em um documento.pronto ele irá tentar executar antes do jQuery ser carregado e você receberá um erro $ is indefinido
@Scripts.O desenho não mostra os programas na secção 'scripts'. Ele torna a tag script apropriada onde a chamada é feita.
Para conseguir o que procura, este é praticamente o layout que eu uso:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title>@ViewBag.Title</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
<body>
@RenderBody()
@Scripts.Render("~/bundles/jquery")
<script>
$(function() {
});
</script>
@RenderSection("scripts", required: false)
</body>
</html>
Da mesma forma, o @ RenderSection é útil em vistas que utilizam este layout, e neste caso seria usado como:
@section scripts {
<script>
$(function() {
});
</script>
}
Normalmente é aconselhável não usar scripts inline no corpo, de modo que a renderização jQuery no fundo desta ordem vai funcionar bem.