В ASP.NET Razor, как включить атрибут модели в строку? - PullRequest
0 голосов
/ 22 января 2019

Есть ли чистый способ включить подстановку строк в страницу бритвы?

То есть у меня есть код бритвы, который выглядит так, но не работает.Я чувствую, что мне не хватает пунктуации.

<div class='card-img'>
    <img src='images/User-@Model.Id.jpg'/>
</div>

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Попробуйте использовать блок кода Razor @(...) или @Url.Content() помощник для конкатенации строк:

@* Code block string concatenation *@
<img src='images/User-@(Model.Id).jpg'/>

@* Content helper string concatenation *@
<img src='@Url.Content("images/User-" + Model.Id + ".jpg")'/>

Обратите внимание, что @Model.Id.jpg не работает, поскольку свойство Id не имеетэлемент с именем jpg, поскольку вторая точка (.) рассматривается как выражение доступа к элементу .

0 голосов
/ 22 января 2019

С вашим текущим кодом бритва думает, что выражение Model.Id.jpg - это некоторый серверный код, который необходимо выполнить. Так что вы получите сообщение об ошибке, в котором говорится, что такого метода / свойства, называемого jpg, не существует ни при каких тип Id есть или нет метода расширения с именем jpg для этого типа.

Чтобы решить эту проблему, вы должны обернуть выражение C # в явные ( и )

<div class='card-img'>
    <img src='images/User-@(Model.Id).jpg'/>
</div>

Это говорит бритве, что Model.Id - это выражение C #, которое необходимо выполнить. Результат выполнения этого выражения будет отображен в HTML. Например, если значение Model.Id равно 100, выводимый результат будет

<img src="images/User-100.jpg">

Теперь внесите коррективы в свой путь (значение src) в зависимости от того, где вы храните изображение.

...