Условная логика, чтобы обернуть некоторые HTML в Html.BeginForm - PullRequest
1 голос
/ 12 августа 2011

У меня есть бритва, которая выглядит следующим образом

@using(Html.BeginForm(MVC.Account.Info()))
{
    <p>blah blah blah</p>

    <input type="submit" value="Submit!" />
}

Теперь я хочу только визуализировать форму и отправить, если User.Identity.IsAuthenticated

если бы уровень отступа был значительным, это могло бы выглядеть следующим образом

@if(User.Identity.IsAuthenticated) // wraps the using and its open brace
{
    @using(Html.BeginForm(MVC.Account.Info()))
    {
}

        <p>blah blah blah</p>

@if(User.Identity.IsAuthenticated) // wraps the input and the using closing brace
{
        <input type="submit" value="Submit!" />
    }
}

Но, конечно, этот синтаксис не работает. Кто-нибудь знает хороший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 12 августа 2011

закончилось использованием бритвенного помощника.Я думаю, что это лучший способ, но я все равно не буду возражать против поиска альтернатив, если у вас есть хорошая

@helper Info()
{
   <p>blah blah blah</p>
}

@if(User.Identity.IsAuthenticated)
{
    using(Html.BeginForm(MVC.Account.Info()))
    {
        @Info()
        <input type="submit" value="Submit!" />
    }
}
else
{
    @Info()
}
1 голос
/ 12 августа 2011
@if(User.Identity.IsAuthenticated)
{
    @using(Html.BeginForm(MVC.Account.Info()))
    {
        <p>blah blah blah</p>
        <input type="submit" value="Submit!" />
    }
}
else
{
    <p>blah blah blah</p>
}

Если вы действительно не хотите повторяться, вы можете использовать javascript для перемещения <p> внутри формы, если она существует.

0 голосов
/ 06 июля 2015

Вы можете удалить using, если утилизируете участника самостоятельно.

@{
   MvcForm htmlForm = null;
   if (User.Identity.IsAuthenticated)
   {
      //render the begin of a <form> tag
      htmlForm = Html.BeginForm(MVC.Account.Info());
   }
}

@* content goes here *@
<p>blah blah blah</p>

@if (htmlForm != null)
{
   //render the end of </form>
   <input type="submit" value="Submit!" />
   htmlForm.EndForm();
}
...