Почему я получаю Parser Error, когда следую этому примеру? - PullRequest
2 голосов
/ 31 августа 2011

Я следовал этим инструкциям здесь: http://w3schools.com/razor/razor_example.asp ПРИМЕЧАНИЕ: я использую Web Matrix

В примере сказано, что сделать это:

@
{
var imagePath; 
if( Request["Choice"] != null)
{imagePath="images\" + Request["Choice"];} 
} 
<!DOCTYPE html> 
<html> 
<body> 
<h1>Display Images</h1> 
<form method="post" action=""> 
<div>
   I want to see: 
   <select name="Choice"> 
      <option value="Photo1.jpg">Photo 1</option> 
      <option value="Photo2.jpg">Photo 2</option> 
      <option value="Photo3.jpg">Photo 3</option> 
   </select> 
   &nbsp; 
   <input type="submit" value="Submit" /> 
</div> 
<div style="padding:10px;"> 
@if(imagePath != "")
{<img src="@imagePath" alt="Sample" />} 
</div> 
</form> 
</body> 
</html> 

И все, что я получаю этоэта ошибка:

Нужно ли что-то настраивать, чтобы принимать @ {на отдельных линиях?

    Server Error in '/' Application.
    Parser Error 
    Description: An error occurred during the parsing of a resource
    required to service this request. Please review the following 
    specific parse error details and modify your source file appropriately. 

    Parser Error Message: A space or line break was encountered after
    the "@" character.  Only valid identifiers, keywords, comments, 
    "(" and "{" are valid at the start of a code block and they must 
    occur immediately following "@" with no space in between.


    Source Error: 


    Line 1:  @
    Line 2:  {
    Line 3:  var imagePath; 


    Source File: /Page.cshtml    Line: 1 


    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 

Если я помещу их в одну строку, я получаю эту ошибку:

    Parser Error 
    Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

    Parser Error Message: The code block is missing a closing "}" character.  Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.


    Source Error: 


    Line 1:  @{
    Line 2:  var imagePath; 
    Line 3:  if( Request["Choice"] != null)


    Source File: /Page.cshtml    Line: 1

Я не знаю, что не так.

Ответы [ 4 ]

5 голосов
/ 04 сентября 2014

Некоторые люди могут наткнуться на этот ответ, просто скопировав примеры кода с jquery.com в файл бритвы.Например, я что-то тестировал и получил ошибку из длинного значения переменной javascript, а именно, регулярное выражение.

 emailRegex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,

Обратите внимание на @@, мне пришлось добавить второй @ для выхода .... в противном случаеЯ получаю сообщение об ошибке выше, и, таким образом, поиск в Google показывает мне эту страницу переполнения стека в верхнем результате.Поэтому, хотя это и не дает прямого ответа на вопрос, я вполне уверен, что это может помочь кому-то еще.

2 голосов
/ 31 августа 2011

Вот как исправить пару ошибок в вашем коде:

@{
    var imagePath = ""; 
    if(Request["Choice"] != null) {
        imagePath = "images/" + Request["Choice"];
    } 
} 
<!DOCTYPE html> 
<html> 
<body> 
<h1>Display Images</h1> 
<form method="post" action=""> 
<div>
   I want to see: 
   <select name="Choice"> 
      <option value="Photo1.jpg">Photo 1</option> 
      <option value="Photo2.jpg">Photo 2</option> 
      <option value="Photo3.jpg">Photo 3</option> 
   </select> 
   &nbsp; 
   <input type="submit" value="Submit" /> 
</div> 
<div style="padding:10px;"> 
    @if(imagePath != "") {
        <img src="@imagePath" alt="Sample" />
    } 
</div> 
</form> 
</body> 
</html> 
1 голос
/ 31 августа 2011

Ваш код неверен на var imagePath;Вы не можете объявить с var без присвоения значения.Просто измените его на:var imagePath = "";или жеstring imagePath;

1 голос
/ 31 августа 2011

Вам нужно удалить разрыв строки после @ символ.измените ваш код следующим образом

    @{
    var imagePath;
////other things.. 

вот хороший справочник по синтаксису для вас http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx и вам тоже нужно поменять эти строки,

@{if(imagePath != "")

<img src="@imagePath" alt="Sample" />

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...