从剃刀代码中使用javascript/jquery [英] Using javascript/jquery from within razor code

查看:71
本文介绍了从剃刀代码中使用javascript/jquery的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这似乎很简单,但我无法弄清楚如何从剃须刀代码中调用javascript函数.

It seems simple but i cant figure out how to call javascript function from within razor code.

问题:我需要在表头中获得传递ID的列的位置.我正在从我的剃须刀代码中调用 getPosition 函数

Problem: I need to get the position of a column in my table header with the id passed.. I am calling getPosition function from within my razor code

<table>
   <thead>
       <tr>
       @foreach (Assessment geAssessment in Model.assessments)
       {
          <th id=@geAssessment.AssessmentID>@geAssessment.Name</th>
       }
       </tr>
   </thead>
   <tbody>
     <tr>
       @foreach (ShortResult geResult in Model.results)
       {
           @:{ var i = getPosition(@geResult.assessmentId);}
       }
      </tr>
  </tbody>
 </table>   

  • 我的脚本在同一视图/页面

    • My script in the same view/page

      <script type="text/javascript">
         function getPosition(id) {
          var c = '#' + id;
          alert(c);
          return $c.index();    
        }
      
        $(function () {});
      </script>
      

    • 更新

      按照马克斯的建议,我如下更改了表格,这很完美,但是现在我该如何在td中设置一个值

      As suggested by Max, i changed my table as follows, which is perfect but now how can i set a value in the td

      <tbody>
        <tr>
          @{
                                          var index = 4; //start index of assessments will be 4
                                          foreach(Assessment geAssessment in Model.assessments)
                                          {
                                          <td>
                                              @foreach (ShortResult geResult in Model.results)
                                              {
                                                  if(geResult.StudentID == geStudent.studentid)
                                                  {
                                                  @:
                                                      <script>
                                                          {
      
                                                              var assessmentIndex = getPosition(@geResult.assessmentId);
                                                              @*if (assessmentIndex == @index) {
                                                                  geResult.ResultValue
                                                              }*@
      
                                                          }
                                                      </script>
      
                                                  }
                                              }
                                           </td>
                                          index++;
                                          }
                                       }
        </tr>    
       </tbody>
      

      现在让我解释一下发生了什么..

      Now let me explain whats going on ..

      • 我想根据模型中的评估数量连续添加x个tds
      • 对于每个td,我都会检查是否具有此特定的evaluationid的结果,如果是,我想在td中打印它..此处存在一些语法错误:

      • i want to add x tds in a row based on the number of assessments in my model
      • for each td i check if i have a result with this particular assessmentid, if yes i want to print it in the td..there is some syntax error here:

      if (assessmentIndex == @index) {
                                                                  geResult.ResultValue
       }
      

      推荐答案

      具有getPosition函数的脚本必须位于您的调用上方. @之后:您必须使用指令,否则将其视为文本.您的代码必须类似于:

      Your script with getPosition function has to be above your call. After @: you have to use directive otherwise it's considered like a text. Your code has to look like:

      <script type="text/javascript">
        function getPosition(id) {
          var c = '#' + id;
          alert(c);
          return $c.index();    
        }
      
        $(function () {});
      </script>
      
      
      <table>
         <thead>
             <tr>
             @foreach (Assessment geAssessment in Model.assessments)
             {
                <th id=@geAssessment.AssessmentID>@geAssessment.Name</th>
             }
             </tr>
         </thead>
         <tbody>
           <tr>
             @foreach (ShortResult geResult in Model.results)
             {
                 @: <script>{ var i = getPosition(@geResult.assessmentId);}</script>
             }
            </tr>
        </tbody>
       </table>
      

      这篇关于从剃刀代码中使用javascript/jquery的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆