2
에 의해 JSON()를 사용하여 반환 문자열로 뷰 결과를 반환하는 함수가 내가 JSON 응답 내에서 객체로 반환 할 수 있습니다
protected string RenderViewResultToString(ViewResultBase viewResult) {
using (var sw = new StringWriter()) {
if (string.IsNullOrEmpty(viewResult.ViewName))
viewResult.ViewName = ControllerContext.RouteData.GetRequiredString("action");
ViewEngineResult result = null;
if (viewResult.View == null) {
result = viewResult.ViewEngineCollection.FindPartialView(ControllerContext, viewResult.ViewName);
if (result.View == null)
throw new InvalidOperationException("Unable to find view. Searched in: " + string.Join(",", result.SearchedLocations));
viewResult.View = result.View;
}
var view = viewResult.View;
var viewContext = new ViewContext(ControllerContext, view, viewResult.ViewData, viewResult.TempData, sw);
view.Render(viewContext, sw);
if (result != null)
result.ViewEngine.ReleaseView(ControllerContext, view);
return sw.ToString();
}
}
그래서, 내 컨트롤러에서 나는이 :
[HttpPost, ValidateInput(false)]
public JsonResult Edit(/* stuff */) {
bool success = true;
try {
/* stuff */
} catch {
/* stuff */
success = false;
}
return Json(new { success, result = RenderViewResultToString(/* stuff - call to something that gives a ViewResult */) });
}
채널에서 "문서로 해석되었지만 MIME 유형 application/json으로 전송 된 리소스." JSON을 브라우저에서 텍스트로 렌더링합니다. Firefox/IE에서 파일을 다운로드하라는 메시지가 나타납니다.
무엇을 제공합니까?
예 주소가 변경됩니다. @는 면도기 문법이므로 유효한 ID를 출력하므로 문제는되지 않습니다. – enashnash
'event.preventDefault();'가 양식 제출을 억제한다고 생각 했습니까? – enashnash
제출 방법이 좋다고 확신합니까? 처음에 경고를 추가해보십시오. 그렇지 않은 경우 콘솔에서 열어 실제 선택기가 결과를 반환하는지 확인하십시오. 그렇다면,'event.preventDefault(); 대신'return false;'를 사용해보십시오. submit 함수는 실제로 오래된 것이고, 이것이 작동해야합니다. –