Это не использует тот же код, что и OP, но я конвертировал некоторый код C # из книги MVC в VB.NET и застрял в смешивании встроенного кода HTML и VB.Это оригинальный C #:
@using (Html.BeginForm()) {
@Html.ValidationSummary()
<p>Your name: @Html.TextBoxFor(x => x.Name, new { @class = "form-control" }) </p>
<p>Your email: @Html.TextBoxFor(x => x.Email, new { @class = "form-control" }) </p>
<p>Your phone: @Html.TextBoxFor(x => x.Phone, new { @class = "form-control" }) </p>
<p>Will you attend?
@Html.DropDownListFor(x => x.WillAttend, new[] {
new SelectListItem() {Text = "Yes, I'll be there",
Value = bool.TrueString},
new SelectListItem() {Text = "No, I can't come",
Value = bool.FalseString}
}, "Choose an option", new { @class = "form-control" })
</p>
}
, и это различные способы представления его в VB:
@Using Html.BeginForm()
@:<p>Your name: @Html.TextBoxFor(Function(x) x.Name)</p>
@:<p>Your email: @Html.TextBoxFor(Function(x) x.Email)</p>
@:<p>Your phone: @Html.TextBoxFor(Function(x) x.Phone)</p>
@:<p>Will you attend?
@Html.DropDownListFor(Function(x) x.WillAttend, New SelectListItem() {New SelectListItem() With {.Text = "Yes", .Value = Boolean.TrueString}, New SelectListItem() With {.Text = "No", .Value = Boolean.FalseString}})
@:</p>
End Using
@Using Html.BeginForm()
@<text>
<p>Your name: @Html.TextBoxFor(Function(x) x.Name)</p>
<p>Your email: @Html.TextBoxFor(Function(x) x.Email)</p>
<p>Your phone: @Html.TextBoxFor(Function(x) x.Phone)</p>
<p>Will you attend?
@Html.DropDownListFor(Function(x) x.WillAttend, New SelectListItem() {New SelectListItem() With {.Text = "Yes", .Value = Boolean.TrueString}, New SelectListItem() With {.Text = "No", .Value = Boolean.FalseString}})
</p>
</text>
End Using
@code
Using Html.BeginForm()
@:<p>Your name: @Html.TextBoxFor(Function(x) x.Name)</p>
@:<p>Your email: @Html.TextBoxFor(Function(x) x.Email)</p>
@:<p>Your phone: @Html.TextBoxFor(Function(x) x.Phone)</p>
@:<p>Will you attend?
@Html.DropDownListFor(Function(x) x.WillAttend, New SelectListItem() {New SelectListItem() With {.Text = "Yes", .Value = Boolean.TrueString}, New SelectListItem() With {.Text = "No", .Value = Boolean.FalseString}})
@:</p>
End Using
End Code
@code
Using Html.BeginForm()
@<text>
<p>Your name: @Html.TextBoxFor(Function(x) x.Name)</p>
<p>Your email: @Html.TextBoxFor(Function(x) x.Email)</p>
<p>Your phone: @Html.TextBoxFor(Function(x) x.Phone)</p>
<p>Will you attend?
@Html.DropDownListFor(Function(x) x.WillAttend, New SelectListItem() {New SelectListItem() With {.Text = "Yes", .Value = Boolean.TrueString}, New SelectListItem() With {.Text = "No", .Value = Boolean.FalseString}})
</p>
</text>
End Using
End Code
. Из этого следует, что когда вам нужно включить inlineHTML в кодовом блоке вам нужно либо поставить перед каждой строкой @:
, либо заключить HTML в блок @<text></text>
.Также очевидно, что это применимо, когда вы используете @Code
... End Code
вместо запуска блока кода с @
.
ps. Обратите внимание, что теги @<text></text>
не выводятся встраницы, чтобы они не мешали чему-либо