从C#(MVC)发布到Web API

时间:2013-10-29 22:30:06

标签: jquery .net asp.net-mvc asp.net-web-api http-post

C#(from the controller(MVC)) {/ 1}}中的等效内容是什么,

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

POSTing value into a Web API method using a standard jQuery $.post

3 个答案:

答案 0 :(得分: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中定位。效果很好,绝对是我的推荐。

[edit] - 虽然这个问题与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: - )

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

正如其他人所建议您可以使用WebClient类。您还可以尝试一些替代方案。看看HttpClient和RestSharp,两者都可以通过nuget获得。我个人使用RestSharp和许多第三方API以及我自己的API,效果很好。