【问题标题】:Passing the string value from view to controller sending only null将字符串值从视图传递到仅发送 null 的控制器
【发布时间】:2013-03-24 18:22:49
【问题描述】:

我想向控制器发送一些数据,但我总是在控制器的参数中得到空值。我在寻找解决方案,但没有找到解决方案。请提供一些建议或帮助。

ajax 调用

 var submittedName = 1; 
 $.ajax(
  {
      url: '/api/monitor/Detailsfetch',
      type: "post",
      data: { 'submittedName': submittedName},
      success: function (data) {
          alert("passed");
      },
      error: function (xhr, ajaxOptions, thrownError) {
               alert(thrownError);}
  });

控制器部分

  [System.Web.Http.HttpPost]
  public ContentResult Detailsfetch(string submittedName)        
    {sone code here}`

【问题讨论】:

  • 您传递的不是字符串而是整数。调用的错误函数会发生什么,在这种情况下,错误消息是什么?
  • 如果我传递一些字符串而不是 int ,结果是相同的并且没有错误,但问题是当我在控制器上放置断点时它显示参数的 null 值。
  • 试试type: "POST"而不是"post"
  • 它也没有任何区别

标签: jquery ajax asp.net-mvc model-view-controller


【解决方案1】:

从 cmets 以及您提供的少量信息中,我猜您的路线设置不正确。如果您想对此进行测试(假设您没有更改默认规则)。尝试将参数重命名为 id(在控制器和 JS 中)。如果这样可行,那是因为您的路线未配置

在这种情况下,请参阅this 寻求帮助

基本上你的application_start应该有这样的东西

RouteTable.Routes.Add(new Route {
    Url = "[controller]/[action]/[submittedName]",
    RouteHandler = typeof(MvcRouteHandler)
})

【讨论】:

  • Thnxs for answer 我将参数重命名为 id ......现在我将“Detailsfetch”作为与函数名称相同的参数值...... .......我在做一些很愚蠢的事情吗!
  • @user1260967 你评论的问题解决了吗?
  • 请详细说明(作为对问题的编辑)例如你的路由设置如何,你在哪里得到提到的错误等
  • 当我传递数据时,它在浏览器中正确显示为“Parameters bla bla and Sources = bla+bla”,但在控制器端,我将 null 作为参数值,但一旦我重命名参数as id ...它显示的参数值与方法名称相同。
  • @user1260967 这是一个路由错误,如果没有确切的路径路由信息就无法帮助您
【解决方案2】:

在这种情况下,无法使用数据发送参数值:{ 'submittedName': submitName} 所以另一种方法是在 URL 本身中传递参数数据

/api/monitor/Detailsfetch/?submittedName="+somename+"",

希望这可以帮助一些身体!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 2017-02-21
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多