1
MVC 컨트롤러에서 일부 데이터를 검색하기 위해 JQuery의 getJSON 메서드를 사용하고 있습니다.
[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"이 공급되면 I 모두 주소록 또는 연락처 주어진 수의 양을 공급하기 위해 제어기 방법을 사용할 수 있다는 것이다.
문제는 "contacts/GetContacts/5"에 GET 요청을 보낼 때 내 컨트롤러의 "numberOf"가 항상 null이라는 것입니다. 그러나 "Contacts/GetContacts /? numberOf = 5"로 GET 요청을 보내면 예상대로 작동합니다.
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
은 쿼리 문자열을 전달하면 제대로 작동하지 않는 것처럼 보입니다. – scottm
먼저 경로를 정의 했으므로 첫 번째 방법을 먼저 사용했습니다. 첫 번째 제안이 효과적 이었으므로 라우팅 문제가 발생했습니다. 근본적인 원인은 내가 대신에 기본 경로 아래에 내 경로를 정의했다는 것입니다. 따라서 요청이 기본 경로로 라우팅되고 컨트롤러가 'numberOf'가 아니라 'Id'를 예상했기 때문에 매개 변수에 매핑 할 수 없습니다. 감사합니다. 토마스! – Kappers