C# 如何将razor视图模式属性值传递给javascript函数

C# 如何将razor视图模式属性值传递给javascript函数,c#,javascript,asp.net-mvc,asp.net-mvc-4,razor,C#,Javascript,Asp.net Mvc,Asp.net Mvc 4,Razor,我尝试将razor值发送到jquery函数 视图: @Html.TextBoxFor(model => model.NumTransportado, new { @class = "form-control input-sm", id = "NumTransResp" + Model.ServicosID + "", name = "NumTransResp" + Model.ServicosID + "", onchange = "PreencheDadosVendedor(this,

我尝试将razor值发送到jquery函数

视图:

@Html.TextBoxFor(model => model.NumTransportado, new { @class = "form-control input-sm", id = "NumTransResp" + Model.ServicosID + "", name = "NumTransResp" + Model.ServicosID + "", onchange = "PreencheDadosVendedor(this, 3, " + @Model.ServicosID + ")" })
我可以使用所有参数,除了
“+@Model.ServicosID+”

Js文件:

function PreencheDadosVendedor(idVend, tipoFuncionario, idServicoEdicao) {
$.getJSON("/Contrato/getDadosVendedor", { id: $(idVend).val(), tipoFuncionario: tipoFuncionario },
  function (result) {
      switch (tipoFuncionario) {
          case 1:
              $("#NomeVendedor_Contrato").val(result.NomeVendedor);
          case 2:
              $("#NomeTransResponsavel").val(result.NomeVendedor);
          case 3:
              $("#NomeTransResponsavel_" + idServicoEdicao + "").val(result.NomeVendedor);
      }
  });
}

我试着做
idSericoEdicao
是我的
@Model.ServicosID
,但我得到了相同的结果:未定义的未定义的原因(假设值是字符串)是因为需要将
@Model.ServicosID
括在引号中,否则它将查找属性的值作为变量的名称,相反,您只需要将值作为字符串传递

试试这个:-

@Html.TextBoxFor(model => model.NumTransportado, 
                  new { @class = "form-control input-sm", 
                    id = "NumTransResp" + Model.ServicosID + "", 
                    name = "NumTransResp" + Model.ServicosID + "", 
                    onchange = "PreencheDadosVendedor(this, 3, '" + @Model.ServicosID + "')" });
                                                               ^____                     ^____                                  
或者最好这样做,而不是添加
onchange
属性;改为附加一个事件,并使用
data-*
属性来存储特定于元素的值,这样可以将html和js分开:

i、 e:


未定义(假设值是字符串)的原因是需要将
@Model.ServicosID
括在引号中,否则它将查找属性值作为变量名,而只需将值作为字符串传递

试试这个:-

@Html.TextBoxFor(model => model.NumTransportado, 
                  new { @class = "form-control input-sm", 
                    id = "NumTransResp" + Model.ServicosID + "", 
                    name = "NumTransResp" + Model.ServicosID + "", 
                    onchange = "PreencheDadosVendedor(this, 3, '" + @Model.ServicosID + "')" });
                                                               ^____                     ^____                                  
或者最好这样做,而不是添加
onchange
属性;改为附加一个事件,并使用
data-*
属性来存储特定于元素的值,这样可以将html和js分开:

i、 e:


@Model.ServicosID
在您的视图模型中确实有值吗?是的,有值。我多次使用它查看HTML页面的源代码(在浏览器中),查找onchange属性。它看起来像什么?看起来很好,做我想要的浏览器中的html:
我想要的683 it值,它确实是
@Model.ServicoId
在视图模型中确实有值?是的,有值。我多次使用它查看HTML页面的源代码(在浏览器中),查找onchange属性。它看起来像什么?看起来很好,按我的要求做浏览器中的html:
我想要的683IT值
$('.myclass').change(function(e){
     var idServicoEdicao = this.id.replace("NumTransResp",""),  //get the part from its own id
         tipoFuncionario = $(this).data("tipoFuncionario"); //get the value from data attribute

     $.getJSON("/Contrato/getDadosVendedor", { id: this.value, tipoFuncionario: tipoFuncionario },
 function (result) {
      switch (tipoFuncionario) {
          case 1:
              $("#NomeVendedor_Contrato").val(result.NomeVendedor);
          case 2:
              $("#NomeTransResponsavel").val(result.NomeVendedor);
          case 3:
              $("#NomeTransResponsavel_" + idServicoEdicao).val(result.NomeVendedor);
      }
  });

});