1
我正在使用JQuery的getJSON方法從MVC控制器中檢索一些數據。
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetContacts(int? numberOf)
{
List<Contact> contacts =
(numberOf != null && numberOf > 0) ?
_provider.GetContacts(Convert.ToInt32(numberOf)):
_provider.GetContacts();
return Json(contacts);
}
的想法是,我可以使用該控制器的方法,以同時提供所有聯繫人或聯繫人的給定數量,如果「numberOf」被提供。
問題是,當我發送GET請求到「Contacts/GetContacts/5」時,我的控制器中的「numberOf」始終爲空。但是,如果我將GET請求發送到「Contacts/GetContacts /?numberOf = 5」,它將按預期工作。
如果有幫助,這裏的JavaScript方法:
getContacts: function(numberOf){
var path = "/Contact/GetContacts/";
path = (numberOf<=0) ? path : "/Contact/GetContacts/" + numberOf;
$.getJSON(path, null,
function(json){
$.each(json, function(){
$('tbody','#contacts').append(
"<tr id=\"contact-"+ this.Id +"\">"
+ "<td>"+ this.Id +"</td>"
+ "<td>"+ this.FirstName +"</td>"
+ "<td>"+ this.LastName +"</td>"
+ "</tr>"
);
});
});
},
不認爲這是正確的。如果numberOf爲10,則路徑爲:「/Contact/GetContact/10"...在給定此方法的情況下,沒有對numberOf或id的引用。將{numberOf}添加到路由表不會做任何事情。如果我錯了,請糾正我。 – Amir 2009-10-11 18:01:13
如果傳遞查詢字符串確實工作,那麼肯定看起來像路由問題。 – scottm 2009-10-11 18:32:39
我首先採取了第一種方法,因爲我已經定義了一條路線。你的第一個建議起作用了,所以你說我們是正確的路由問題。根本原因是我在默認路線下定義了我的路線,而不是在上面。因此,請求被路由到默認路由,並且控制器無法映射到參數,因爲它期望'Id'而不是'numberOf'。 感謝Tomas! – Kappers 2009-10-11 18:33:09