ASP.NET에서 메시징 웹 응용 프로그램을 만들고 메시지를 보내려는 사용자에게 오류 메시지를 표시 할 때 문제가 발생합니다. 잘못된.ASP.NET MVC : 쿼리 문자열이 손상되지 않은 뷰 반환
사용자는 사람들의 프로필을보고 '메시지 보내기'를 클릭 할 수 있습니다. 다음 조치를 (? URL이/메시지/= 사용자 이름으로 생성된다)라고하고 그들에게 자신의 메시지를 입력하고 보낼 수있는 페이지가 표시되어 표시되는 페이지에서
public ActionResult Create(string to)
{
ViewData["recipientUsername"] = to;
return View();
}
를, 사용자 이름을 입력 에서 숨겨진 입력 필드로 이동합니다. 사용자가 클릭 '전송'하는 경우 :
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection, string message)
{
try
{
//do message stuff that errors out
}
catch
{
ModelState.AddModelErrors(message.GetRuleViolations()); //adding errors to modelstate
}
return View();
}
이 이제 오류 메시지가 사용자의 벌금 표시됩니다, 그러나 URL은 더 이상 쿼리 문자열 (/ 메시지/생성)이 없다고에서 변경됩니다. 다시 말하지만, 사용자가 새로 고침 버튼을 클릭 할 때 Create 액션의 페이지 오류가 더 이상 'to'매개 변수를 갖지 않는다는 점을 제외하고는 괜찮습니다.
그래서 나는 어떻게 든 내 쿼리를 유지할 필요가 있다고 생각합니다. 이 작업을 수행 할 수있는 방법이 있습니까? 아니면 다른 방법을 모두 사용해야합니까?
Create 메소드가'to string '을 취했기 때문에 View to를 반환 할 때 여전히 URL에 쿼리 문자열이나 라우팅 규칙이있는 곳을 설정합니다. 일단 당신이'return View()'를 호출하면 Url은 더 이상 쿼리 문자열에 "to"를 포함하지 않는다고 말하는 것입니까? –
흠 ... 내 질문에 방금 대답했을 것 같아. 위의 작업을 단순화 할 때 방금 작성 후 작업에 매개 변수로 추가했습니다. 실제 코드를 표시하도록 업데이트했습니다. 컬렉션 [ 'recipientUsername']을 사용하여 수신자를받습니다. 이것을 생성 동작의 매개 변수로 변경하면 수정됩니까? 그렇다면 대답을 쓸어 넘기면 나는 그것을 표시 할 것입니다. (또한, 예 - url에 더 이상 쿼리 문자열에 'to'가 포함되지 않습니다.) – ajbeaven