if 语句中的 MVC @HTML.Action 导致问题

Rub*_*der 1 c# asp.net-mvc

我正在开发组合的编辑/新项目页面,想要检查项目列表,然后调用HTML.Action()默认值,.Count > 0或者循环调用相同的列表HTML.Action()以返回具有不同数据的相同部分视图。

到目前为止不起作用的代码:

@{ 
    var list = @Model.MyList.FindAll(x=>x.somval == someotherval);

    if (list.Count == 0)
    {
        @Html.Action("MyFunc", "MyController", new { MyData = Default.Value });
    }
    else
    {
        foreach(var Item in @Model.MyList)
        {
            @Html.Action("MyFunc", "MyController", new { MyData = Item.Data });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

}问题是第一个的关闭@Html.Action()导致编译错误(预期为“,”)。一定有一些简单的东西我错过了,但我似乎无法通过谷歌搜索找到问题。

编辑添加完整代码。

编辑:感谢 Ashley Medway 的回答(在我编辑以包含完整代码之前发布),我现在有以下正在运行的内容

@{var list = @Model.MyList.FindAll(x=>x.somval == someotherval); }

@if (list.Count == 0)
{
    Html.Action("MyFunc", "MyController", new { MyData = Default.Value });
}
else
{
    foreach(var Item in list)
    {
        Html.Action("MyFunc", "MyController", new { MyData = Item.Data });
    }
}
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助。

Win*_*Win 5

您需要在 if 语句之前使用 @在 foreach 之前删除 @

@if (Model.MyList.Count == 0)
{
    @Html.Action("MyFunc", "MyController", new { MyData = Default.Value })
}
else
{
    foreach (var Item in Model.MyList)
    {
        @Html.Action("MyFunc", "MyController", new { MyData = Item.Data })
    }
}
Run Code Online (Sandbox Code Playgroud)