我有一个看起来像这样的剃刀视图
@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!" />
}
}
但是,当然,这种语法不起作用。有人知道这样做的好方法吗?
答案 0 :(得分:5)
最终使用了剃刀助手。我认为这是最好的方法,如果你有一个好的方法,仍然不介意看到替代方案
@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 :(得分:1)
@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>
(如果存在)。
答案 2 :(得分:0)
如果您自己处置该成员,则可以删除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();
}