如何在剃刀视图中的服务器端代码之间编写JavaScript?

时间:2016-10-13 07:08:31

标签: javascript c# asp.net-mvc razor

例如

 $(".button").click(function () {
                var index=$(this).closest('tr').index();
                var records=@Model.Task[index];               
            });

在这里,索引是javascript和@ Model.Task是服务器端所以错误说“当前上下文中不存在名称索引”。

2 个答案:

答案 0 :(得分:2)

在点击功能之前,你应该在下面做。

import 'rxjs/add/operator/timeout';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/finally';
import 'rxjs/add/operator/map';
import 'rxjs/add/observable/throw';
import {Observable} from 'rxjs/Observable';

之后你可以做

 CREATE OR REPLACE FUNCTION f_numbertoword(pn_number NUMBER) RETURN VARCHAR2 IS
  f_numbertoword VARCHAR2(500):= null;
  v_len number;
  v_num number;
  v_name varchar2(100);

BEGIN

  v_len:= length(pn_number);

  for i in 1..v_len
  loop
   v_num := substr(pn_number,i,1);

   --dbms_output.put_line(v_num);

  v_name :=  case when (v_num = 0) THEN
                       'zero'
                        when (v_num = 1) THEN
                        'one'
                        when (v_num = 2) THEN
                        'two'
                        when (v_num = 3) THEN
                        'three'
                        when (v_num = 4) THEN
                        'four'
                        when (v_num = 5) THEN
                        'five'
                        when (v_num = 6) THEN
                        'six'
                        when (v_num = 7) THEN
                        'seven'
                        when (v_num = 8) THEN
                        'eight'
                        when (v_num = 9) THEN
                        'nine'
                    end;

   f_numbertoword:=f_numbertoword||' '|| v_name;              

  end loop;              

RETURN f_numbertoword;
END;

答案 1 :(得分:0)

正如vivek和Andrei所说的那样 - 这是不可能的。 index是从javascript变量的,而Model.Task是来自model的数组。他们在不同的时刻被执行。以这种方式思考。在向客户端(浏览器)发送响应之前,服务器执行/解析从Model获得的所有值。它意味着客户端将它们视为普通文本,而不是对象。但是javascript是在客户端(浏览器)上执行的。下载并呈现页面后(您提供的代码甚至稍后执行 - 点击按钮后)。这意味着当解析模型时,它对javascript“不知道”。

你想做的唯一方法就是KnowGe发布的内容 - 将所有Model.Task表保存为javascript对象,然后在你的监听器中使用这个对象