【问题标题】:Calling Url.Action in JQuery with multiple parameters使用多个参数在 JQuery 中调用 Url.Action
【发布时间】:2013-10-22 11:04:28
【问题描述】:

我正在尝试使用 Url.Action 来调用控制器 c# 函数:

public ActionResult Setup(string ID, string Definition)

这个函数位于控制器类MachineController.cs中,它返回一个PartialView。

因此,在我的脚本中,我尝试使用以下行调用函数“Setup”:

var selected = $('#dropselector').find(':selected').text();

$.get('@Url.Action("Setup", "Machine", new { ID = @Model.ID , Definition = "_holder"})'.replace("_holder", selected), function (data) {
     $('#MachineSetup').replaceWith(data);
});

似乎发生的是第一个参数(ID)传递没有问题,但第二个参数(定义)总是空字符串。我什至尝试将“定义”分配给@Model.ID 与 ID 字段相同,因为它们都是字符串,但结果似乎相同,填充了 ID,但定义是一个空字符串。

问题肯定与第二个参数的传递有关,有什么想法吗?

【问题讨论】:

  • 您是否尝试在浏览器的调试器工具中查看selected 变量(F12)?
  • 我认为replace("_holder", selected), , .... 附近有语法错误。删除多余的逗号。
  • 是的,抱歉,第二个逗号是错字。谢谢。

标签: c# jquery


【解决方案1】:

你可以试试下面的

var selected = $('#dropselector').find(':selected').text();

$.get(
   '@Url.Action("Setup","Machine", new { ID = @Model.ID })',
   {
     data:{definition:selected}
   } , 
   function (data) 
   {
       $('#MachineSetup').replaceWith(data);
   });

因为 url 将包含 Model.ID 但 selected 的动态值会改变。

如果您正在执行Setup,您是否不会考虑使用POST 操作来确保值不会缓存在客户端计算机上。

【讨论】:

  • 感谢您的帮助,我发现如果我使用这种格式(将两个参数添加到数据字段)并使用 $.ajax(而不是'get'或'post')它可以工作!谢谢!
猜你喜欢
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 2015-06-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多