그래서 나는 문자열을 사용하고 JsonResult 반환하는 컨트롤러 액션있어 :ControllerAction의 JsonResult를 ViewModel에 AJAX가없는 문자열로 가져 오는 방법은 무엇입니까?
public JsonResult GetMemberJSON(string memberNumber)
{
var t = new { foo = memberNumber }; // does more crap, greatly simplified here....
return Json(t, JsonRequestBehavior.AllowGet);
}
을 그리고 난 '인쇄'에 원하는 JSON 직접보기의 HTML에 그래서 그 뷰에서 실행되는 자바 스크립트 pageload에서 JSON을 볼 수 있습니다. 이 JSON에서 Ajax를 사용하고 싶지는 않다. 코드에서 JSON을 잡아서는 안된다고 말할 수있는 이유가 없다. 이 JSON을 보유 할 필요가
내 뷰 모델은 다음과 같습니다 자바 스크립트 코드가로 JSON 문자열을 처리 할
public class MakePaymentViewModel : IValidatableObject
{
public MyClassBlah Blah { get; set; }
public string MemberJSONInfo { get; set }
public void LoadThings(string memberNumber)
{
this.Blah = MyClassBlah.Get(memberNumber);
this.MemberJSONInfo = ""; // what goes here???
}
}
그리고 내보기 :
<div>
<script>
$(document).ready(function() {
var json = @(new HtmlString(Model.MemberPACJSONInfo)); // mixing JS and Razor here....
Library.PaymentDetailManager.BlockPACFieldsAsNeeded(json);
});
</script>
</div>
나는이를 얻을 수 있다는 사실을 알고 Controller 액션이 JsonResult 대신 String을 반환하면 작동하지만 나에게 잘못된 느낌이 들게됩니다. 내가 (할 말 못하는 것)을 System.Web.Script.Serialization.JavaScriptSerializer()를 통해 JsonResult를 실행하는 경우 또한, 나는 유효한 JSON을 얻을 수 있지만, 다음과 같습니다
// viewmodel
var cont = new MembershipCenter.Controllers.MembershipController();
var oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var jsonResult = cont.GetMemberJSON(this.Member.Id);
this.MemberPACJSONInfo = oSerializer.Serialize(jsonResult);
// here's how it renders in the View
{"ContentEncoding":null,"ContentType":null,"Data":{"foo":"990006"},"JsonRequestBehavior":0}
최고의 위인가 내가 물어볼 수 있니? 나는 그것이 작동하지만, 왜 JsonResult에서 ToString()을 호출하는 것이 JSON을 출력하지 않는지 궁금하다. ToString()가 JsonResult 중 하나에서 재정의되지 않기 때문에
나는 ViewData에 열중하지 않지만 ViewData에 ActionResult를 넣은 다음 화면에서 호출하면 화면에 "System.Web.Mvc.JsonResult"가 렌더링됩니다. View에서 Execute()로 어떻게 가져올 수 있습니까? – Graham
내가 말한 것은 컨트롤러에서 할 수 있다는 것입니다. var oSerializer = new ystem.Web.Script.Serialization.JavaScriptSerializer(); var jsonResult = cont.GetMemberJSON (this.Member.Id); ViewData [ "JSONData"] = oSerializer.Serialize (jsonResult); 돌아 가기 View(); – msancho