Ответ 1
Это должно работать.
@if (!Model.ReadOnly)
{
<text>
@section toolbar {
}
</text>
}
Я никогда не говорил, что это будет красиво; -)
Я хочу определить этот раздел, только если какое-либо свойство (Model.ReadOnly
) false
.
@section toolbar {
<div class="tool">
<div class="row">
@Html.ActionLink( Resources.Strings.Edit, "Edit", "Profile" )
</div>
<div class="row">
@Html.ActionLink( Resources.Strings.Delete, "Delete", "Profile" )
</div>
</div >
}
Я попробовал обернуть его в @if ( !Model.ReadOnly ) {}
, но он не работает.
Есть ли способ сделать это?
Я не хочу определять пустой раздел (как @itsmatt предлагает), макет моей страницы изменяет, определен ли раздел или нет (с помощью IsSectionDefined( "toolbar" )
).
Это должно работать.
@if (!Model.ReadOnly)
{
<text>
@section toolbar {
}
</text>
}
Я никогда не говорил, что это будет красиво; -)
Это работает для меня:
@section SomeSection {
@if (!Model.ReadOnly)
{
}
}
По существу, переворачивается, где условно. Это по существу приводит к пустой части, если Model.ReadOnly
истинно.
Update:
Итак, как перемещать этот раздел в PartialView
и делать что-то вроде:
@Html.Partial("MyAction")
в вашем представлении, а затем пусть MyAction
вернет вам соответствующий PartialView
на основе значения ReadOnly? Что-то вроде:
public PartialViewResult MyAction()
{
...
// determine readonly status - could have passed this to the action I suppose
if (ReadOnly)
{
return PartialView("TheOneThatDefinesTheSection");
}
else
{
return PartialView("TheOneThatDoesNotDefineTheSection");
}
}
Похоже, это будет очень хорошо.
Бертрана,
См:
Синтаксис условного оператора Razor If/Else
в основном (para-phrasing),... Razor в настоящее время поддерживает подмножество выражений С# без использования @() и, к сожалению, троичные операторы не являются частью этого набора.
Кроме того, это может быть проблемой:
условная логика в представлении mvc vs htmlhelper vs action
в основном, используйте логику if, чтобы вызвать частичное представление, чтобы удовлетворить ваши критерии.
[edit] Это было мое основное мышление (где ваш код @section определен в этом частичном):
@if(!Model.ReadOnly)
{
@Html.Partial("toolbar")
}