在razor代码中使用javascript / jquery

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

问题:我需要在我的表头中获取一个列的位置,并传递了id ..我在我的razor代码中调用了getPosition函数

 @foreach (Assessment geAssessment in Model.assessments) {  }  @foreach (ShortResult geResult in Model.results) { @:{ var i = getPosition(@geResult.assessmentId);} } 
@geAssessment.Name
  • 我的脚本在同一个视图/页面中

      function getPosition(id) { var c = '#' + id; alert(c); return $c.index(); } $(function () {});  

UPDATE

正如Max所建议的,我改变了我的表,如下所示,这是完美的,但现在如何在td中设置一个值

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

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

  • 我想根据模型中的评估数量连续添加x tds
  • 对于每个td,我检查我是否有这个特定评估的结果,如果是的话我想在td中打印它。这里有一些语法错误:

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

带有getPosition函数的脚本必须高于您的调用。 在@之后:你必须使用指令,否则它被认为是文本。 您的代码必须如下所示:

   @foreach (Assessment geAssessment in Model.assessments) {  }  @foreach (ShortResult geResult in Model.results) { @:  } 
@geAssessment.Name

您好,不需要@:语法,您可以直接使用它,所以现在您的代码看起来像。

    @foreach (Assessment geAssessment in Model.assessments) {  }  @foreach (ShortResult geResult in Model.results) {  } 
@geAssessment.Name