2008-09-06 2 views
1

asp.net mvc의 미리보기 5를 사용하여 샘플 라우팅에 문제가 있습니다. AccountController에서 ASP.NET MVC 미리보기 5 라우팅 모호성

나는이 개 행동이 : 계정을 찾기 위해 노력하고 있지만

public ActionResult Delete() 
public ActionResult Delete(string username) 

을/삭제하거나 계정/삭제 사용자 이름 = ControllerActionInvoker 내 견인 조치 사이의 모호한 그 요청을 삭제라는 예외를 throw 다비드? 행동 양식.

global.asax의 기본 경로는 변경되지 않았습니다.

조치 호출자가 매개 변수 목록을보고 호출하는 메소드를 이해해야합니까?

미리보기 4를 사용하면 동일한 작업을 수행하는 데 이런 종류의 문제가 없었습니다.

아이디어가 있으십니까?

답변

0

왜 이러한 일이 발생하는지 확실히 말할 수는 없습니다. 그러나 삭제 (문자열 사용자 이름) 작업 만 수행하고 매개 변수가 덜한 오버로드를 제거하는 것이 좋습니다.

문자열이 null이기 때문에 계정/삭제를 호출하면 null 사용자 이름 매개 변수로 작업이 호출되고 동작 메서드의 시작 부분에서 테스트 할 수 있습니다.

+0

Berko, 그건 내가 원하는 것이 아닙니다. 두 가지 동작 메서드는 서로 다른 동작을 수행합니다. 메서드의 시작 부분에서 매개 변수를 테스트하는 것은 실제로 올바른 방법이 아닙니다 ... 너무 더러운 것입니다. 뭔가 다른 것을 찾아 낼 것입니다. 어쨌든 –

0

내가) (빈 삭제 도랑, 만 (캐릭터 이름) URL에

비슷한 뭔가를 줄 라우팅 "삭제 사용된다 할 것/{컨트롤러}/{액션}/{사용자 이름}/"? "/ {Controller}/{Action}/{Id} /"가있는 경우 삭제 (문자열 ID)를 수행하는 것이 더 좋을 것입니다.이 방법으로 "/ Account/Delete/davide /"

public ActionResult Delete(string id) 
{ 
    if(string.IsNullOrEmpty(id)) return EmptyID(); 

    // Continue normal Delete method 
} 

public ActionResult EmptyID() 
{ 
    // The method you were going to have on a blank delete. 
} 

그건를하거나 그것을 마무리 :

이드 당신의 삭제 (문자열 ID) 방법 그리고

는이 ""인 디폴트과 같이해야하는 기본 경로를 사용했다 그 if {} else {}에있는 하나의 메소드

어느 쪽이든 나는 e 메소드를 사용하고 빈 문자열의 경로에서 사용자 이름/ID에 대한 기본값을 수행하고 그런 식으로 처리하십시오.

내게 연락하고 싶으면, 내 정보 페이지에서 andrew @ my domain에서 ping을하면 도움이 될 것입니다.

편집 : 어쨌든 Berko는 어쨌든 명명 된 속성이 어떻게 도움이 될지 모르겠다 - 그래서 같은 문제를 발견 한 다른 사람들을 위해 여기에 설명을 적어주세요! :)

+0

당신이 제안한대로 내 메일을 받았습니까? –

0

2 개의 컨트롤러 동작이 동일한 포스트 메서드이기 때문에 모호합니다. 예를 들어 HTTP 게시를 사용하는 양식 데이터를 제출하는 것과 같이 양식 게시 시나리오에서만 사용할 수 있습니다 ..