在剃刀中使用条件不同

时间:2015-08-31 18:21:59

标签: c# asp.net-mvc razor

想象一下以下观点:

//MyForm

是否可以根据条件合并这两个用法,而无需编写 function toggleDIvDisplay(e) { if (!e) e = ''; $('button.search').toggle(e != ''); $('#divAppName').toggle(e == 1); $('#divSSN').toggle(e == 2); $('#divRemref').toggle(e == 3); } $(document).ready(function () { $('button.search').click(function (evt) { evt.preventDefault(); var container = $('#customer-results'); container.hide(); $('table tbody', container).empty(); var searchMethod = $('#@Html.IdFor(model => model.SearchMethod)').val(); switch (searchMethod) { case '1': getByFirstNameAndLastName(); break; case '2': getBySSN(); break; case '3': getByRemRef(); break; default: return false; } }); toggleDIvDisplay(); }); 两次?

2 个答案:

答案 0 :(得分:2)

您可以将其分配给变量并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()
    }
}

答案 1 :(得分:2)

好像你可以使用这个

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