0

C#(from the controller(MVC)) for中的等价物是什么POSTing value into a Web API method using a standard jQuery $.post

我使用标准的 jQuery $.post 让它工作,如下所示:

  $.post('/api/reports', { AgentId: AgentId, ReportName: ReportName, Params: Params, StatsEmailedId: StatsEmailedId, HeaderName: HeaderName,
        RankBy: RankBy, SoldCountsInclude: SoldCountsInclude, SortBy: SortBy, IncludeCo: IncludeCo, DisplayTop: DisplayTop, UserOffice: UserOffice
    },
function (data) { ....
      }
});
4

3 回答 3

1

如果您想在控制器的其他项目/其他地方调用 WebApi 方法,我会使用 WebClient。您可以使用它从 C# 进行任何网络调用。具体查看它的 UploadData 方法:

http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

于 2013-10-29T22:37:00.000 回答
1

我不是 100% 确定我完全理解这个问题。如果您的意思是如何从 jquery(而不是 api)发布到控制器,那么这是一个简单的更改:

  $.post('@Url.Action("actioname","controller")', { AgentId: AgentId, ReportName: ReportName, Params: Params, StatsEmailedId: StatsEmailedId, HeaderName: HeaderName,
        RankBy: RankBy, SoldCountsInclude: SoldCountsInclude, SortBy: SortBy, IncludeCo: IncludeCo, DisplayTop: DisplayTop, UserOffice: UserOffice
    },
function (data) { ....
      }
});

如果调用控制器内部的内部方法,那么您只需调用它就好像调用控制器内部的另一个方法调用一样。

进一步提出的一点是,您可能将 js 放在自己的文件中,在这种情况下,您不能使用这些@Url.Action()东西。在这种情况下,我建议使用 jquery 数据属性并将目标 URL 放置到您的关键 dom 元素之一上,然后使用源文件中的 .data('your-attr') 从您的 js 中定位它。效果很好,绝对是我的推荐。

[编辑] - 虽然问题与 def 相关WebClient,但我认为值得通过使用外部 js 实现的数据属性来证明我的意思:

//the cshtml code
<button id="myUpdateButton" data-target-url="@Url.Action("youraction", "controller")">

//the js code (assumes click on myUpdateButton)
var targetUrl = $(this).data('target-url');
// then use targetUrl in place of the 1st param in the `$.post` method.

无论如何,只有我是 ott :-)

于 2013-10-29T22:33:10.093 回答
0

正如其他人建议的那样,您可以使用 WebClient 类。您也可以尝试几种替代方案。看看 HttpClient 和 RestSharp,两者都可以通过 nuget 获得。我个人将 RestSharp 与许多 3rd 方 API 以及我自己的 API 一起使用,效果很好。

于 2013-10-31T07:27:32.270 回答