Asp.net mvc 在ASP.net MVC 5 HTML帮助程序扩展中动态创建ID

Asp.net mvc 在ASP.net MVC 5 HTML帮助程序扩展中动态创建ID,asp.net-mvc,razor,html-helper,Asp.net Mvc,Razor,Html Helper,当我在视图中循环列表时,我想动态地向隐藏字段添加一个唯一的ID 以下是我所拥有的: @foreach (var food in Model) { if (counter != 0 && counter % 4 == 0) { @:</div> @:<div class="row el-elemen

当我在视图中循环列表时,我想动态地向隐藏字段添加一个唯一的ID

以下是我所拥有的:

@foreach (var food in Model)
            {
                if (counter != 0 && counter % 4 == 0)
                {
                    @:</div>
                    @:<div class="row el-element-overlay m-b-40">
                }

                <!-- /.usercard -->
                              <div class="white-box">
                                  <div class="el-card-item">
                                      <div class="el-card-avatar el-overlay-1">
                                          var theId = "food" + @counter;
                                          @Html.HiddenFor(m => food.Id, new { id = "@{@theId}" })
                                          <img src="@Url.Content("~/Images/"+ @Path.GetFileName(food.FilePath))" />
@foreach(模型中的食品变量)
{
如果(计数器!=0&&计数器%4==0)
{
@:
@:
}
var theId=“food”+@计数器;
@HiddenFor(m=>food.Id,new{Id=“@{@theId}”)
如何获得附加theID变量或将字符串与@counter连接以形成隐藏字段元素的Id


我已经检查过了,但是OP没有描述在他的案例中到底是什么起作用。

从纯语法的角度来看,而不是从这个角度

var theId = "food" + @counter;
@Html.HiddenFor(m => food.Id, new { id = "@{@theId}" })
可以直接在辅助对象内连接:

@Html.HiddenFor(m => food.Id, new { id = "food" + counter.ToString() })
然而,
从编程的角度来看,
@Html.HiddenFor(m=>food.Id)
不正确,将呈现一个错误。您能解释一下为什么您试图呈现一个隐藏的
元素吗?它将用于提交表单吗?

您是否遇到错误?您试图在这里做什么?您无法使用
foreach
循环获取双向模型绑定(请参阅).属性的作用是用于css和jquery选择器,它们在动态循环中毫无意义。我在评论中解释过,我试图隐藏从控制器获得的一些数据,直到我将使用jquery触发可见性。我需要稍后在视图上使用id,它应该首先从它是隐藏的,因为我不想让它可见,只是想把它保存在HTML元素中。