Ответ 1
Это бесформенность Бритвы. Когда вы находитесь в нормальном HTML и используете код С#, помещая что-то с символом @
, он напишет результат на страницу:
<p>@Html.ActionLink("whatever", "whatever"...)</p>
Это похоже на старую школу <%= %>
.
<p><%= SomeMethodThatReturnsSomethingThatWillBeWritten() %></p>
Однако метод Html.ActionLink просто возвращает объект MvcHtmlString
в мире .NET. В первом примере у вас есть обычный блок кода С#. Поэтому вызов Html.ActionLink()
оттуда просто выполняет его и возвращает MvcHtmlString
никому. Во втором примере вы вернулись в контекст HTML, так что он снова пишет HTML.
Вы можете использовать специальный блок <text>
, чтобы вернуться в HTML вместо использования <span>
или другого реального HTML, и он будет писать напрямую, не записывая дополнительный HTML:
case Enums.Stage.ReadyToStart:
<text>@Html.ActionLink(Language.Start, "Start", new { id=Model.ProcessId }, new { @class = "btn btn-success" })</text>
break;
Вы также можете использовать аналогичный синтаксис @:
:
case Enums.Stage.ReadyToStart:
@:@Html.ActionLink(Language.Start, "Start", new { id=Model.ProcessId }, new { @class = "btn btn-success" })
break;
Вы можете узнать больше о здесь
ИЗМЕНИТЬ
Собственно, в этом случае вам не нужен ни один. Вам просто нужен символ @
, которого будет достаточно, чтобы вернуть вас в HTML:
case Enums.Stage.ReadyToStart:
@Html.ActionLink(Language.Start, "Start", new { id=Model.ProcessId }, new { @class = "btn btn-success" })
break;