我不是 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 :-)