【问题标题】:Does The Form Tag Make A Variable Out Of Scope?表单标签是否使变量超出范围?
【发布时间】:2017-01-08 21:13:58
【问题描述】:

我有一个名为 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>
                                }
                                }

【问题讨论】:

  • 你能显示生成的标记吗?
  • 这是你的全部代码吗?您在 html 表单和上面的代码之间有什么删减的吗?我觉得正在发生一些不相关的事情 - 特别是因为 checker 不是可空的布尔值。
  • 按原样更新了所有代码的问题。
  • 我将它切换为一个 int 值并且它起作用了!谁知道为什么?!?!?!?!但它现在正在工作。感谢您的帮助!

标签: javascript c# razor


【解决方案1】:

尝试改变闭包的位置,你的范围不需要那么宽,包括表格。

   @{
    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>

【讨论】:

  • 如果闭包不包含表单,则它无法识别表单中的@checker。
  • 好像不认识?这似乎没有帮助?
猜你喜欢
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2016-09-16
  • 2020-12-24
相关资源
最近更新 更多