我在ProceduresControlller中有以下功能:
Function Add(ByVal bpid As Integer) As ActionResult
Return View(GetAvailableProcedures(bpid))
End Function
<AcceptVerbs(HttpVerbs.Post)> _
Function Add(ByVal bpid As Integer, ByVal code As String, ByVal covered As Boolean) As ActionResult
AddProcedure(bpid, codes, covered)
Return View("Close")
End Function
我正在通过jQuery加载Add对话框,如下所示:
$("#dialog").load(
"/Procedures/Add",
{ bpid: 123 },
function(data) {
alert(data);
});
这是失败的,因为它调用Post方法(其中“cover”不能为空)而不是Get。我尝试用<AcceptVerbs(HttpVerbs.Get)>
来装饰Get,但它并没有改变结果。
为什么这会触发Post,如何让它使用Get?我意识到我可以将名称更改为不明确,但我想知道为什么如果我只传递“bpid”,它将不会选择Get。
答案 0 :(得分:3)
来自jQuery API reference for Ajax.load:
默认情况下会执行GET请求 - 但如果以Object / Map(键/值对)的形式传入任何额外参数,则会发生POST。作为字符串传递的额外参数仍将使用GET请求。
所以我猜你可以改成它:
$("#dialog").load(
"/Procedures/Add",
{ "bpid" : "123" },
function(data) {
alert(data);
}
);
HTHS,
查尔斯