在Razor中不同的条件使用

本文关键字:条件 Razor | 更新日期: 2023-09-27 18:10:30

想象以下视图:

@if(Model.Condition)
{
    @using (Ajax.BeginForm(...))
    {
        //MyForm
    }
}
else
{
    @using (Html.BeginForm(...))
    {
        //MyForm
    }
}

是否有可能根据一个条件将这两种用法结合起来,而不需要写两次//MyForm ?

在Razor中不同的条件使用

您可以,通过将其分配给变量和using():

@{
    IDisposable form;
    if(Model.Condition)
    {
        form = Ajax.BeginForm(...);    
    }
    else
    {
        form = Html.BeginForm(...);
    }
}
using (form)
{
    // Form here
}

或者您可以直接使用EditorTemplate来防止重复编写表单内容:

@if(Model.Condition)
{
    @using (Ajax.BeginForm(...))
    {
        @Html.EditorForModel()
    }
}
else
{
    @using (Html.BeginForm(...))
    {
        @Html.EditorForModel()
    }
}

看起来你可以用这个

@using (Model.Condition ? Ajax.BeginForm() : Html.BeginForm())
{
    //MyForm
}