Javascript 表单标记是否使变量超出范围?

Javascript 表单标记是否使变量超出范围?,javascript,c#,razor,Javascript,C#,Razor,我有一个名为checker的变量,在有表单标记之前,一切都正常。之后,变量变为空?为什么?我该如何修复它 @{ foreach (var f in l) { var theDate = f.date; var timeFrom

我有一个名为checker的变量,在有表单标记之前,一切都正常。之后,变量变为空?为什么?我该如何修复它

@{
                                foreach (var f in l)
                                {
                                    var theDate = f.date;
                                    var timeFrom = f.timeFrom;
                                    var timeUntil = f.timeUntil;
                                    var id = f.id;
                                    <div class="col-lg-offset-1"><b><u> Job Available</u></b><br /></div>
                                    <div><b>@theDate.ToLongDateString()</b></div>
                                <div class="col-lg-offset-1"><b>@timeFrom.ToShortTimeString() - @timeUntil.ToShortTimeString()</b></div>
                                        <br />

                                       var checker = false;

                                       foreach (var q in Model.Invitations)
                                       {
                                           if (q.CleanerId == Model.Cleaner.id)
                                           {
                                               checker = true;
                                              <div>@checker</div>
                                           }
                                       }

                                        <form action="/Authentication/TakeJob" method="post" role="form">
                                            <input class="invited" data-invited="@checker" type="hidden" name="invited" value="@checker" />
                                            <input type="hidden" name="JobId" value="@id" />
                                            <input type="hidden" name="CleanerId" value="@Model.Cleaner.id" />
                                            <button class="btn btn-success btn-lg acceptButton">I'll Take The Job</button>
                                        </form>
                                }
                                }
@{
foreach(l中的变量f)
{
var theDate=f.日期;
var timeFrom=f.timeFrom;
var timeUntil=f.timeUntil;
var id=f.id;
工作可用
@theDate.ToLongDateString() @timeFrom.ToShortTimeString()-@timeUntil.ToShortTimeString()
var checker=false; foreach(模型中的var q) { if(q.CleanerId==Model.Cleaner.id) { checker=true; @检查器 } } 我接受这份工作 } }
尝试更改闭包的位置,您的范围没有必要如此广泛,包括表单

   @{
    var checker = false;
    foreach (var q in Model.Invitations)
    {
        if (q.CleanerId == Model.Cleaner.id)
        {
           <div>@checker</div>
           //here it works
        }
    }
}
    <form action="/Authentication/TakeJob" method="post" role="form">
          //here it is null 
        <input class="invited" data-invited="@this.checker" type="hidden" name="invited" value="@this.checker" />
        <input type="hidden" name="JobId" value="@id" />
        <input type="hidden" name="CleanerId" value="@Model.Cleaner.id" />
        <button class="btn btn-success btn-lg acceptButton">I'll Take The Job</button>
    </form>
@{
var checker=false;
foreach(模型中的var q)
{
if(q.CleanerId==Model.Cleaner.id)
{
@检查器
//它在这里工作
}
}
}
//这里是空的
我接受这份工作

您能显示生成的标记吗?这是您的全部代码吗?在html表单和上面的代码之间是否有任何删减?我觉得有些不相关的事情正在发生-特别是因为
checker
不是一个可为空的布尔值。用所有代码完全按原样更新了问题。我将其切换为int值,结果成功了!谁知道为什么?!?!?!?!但它现在起作用了。谢谢你的帮助!!如果闭包不包含表单,那么它就无法识别表单中的@checker。似乎无法识别它?这似乎没用?