C#(from the controller(MVC))
{/ 1}}中的等效内容是什么,
我使用标准的jQuery $ .post工作,如下所示:
POSTing value into a Web API method using a standard jQuery $.post
答案 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,效果很好。