web-dev-qa-db-ja.com

MVCコントローラーのJsonResultメソッドからJSONを返す

テストASP.NETMVC3アプリにComboBox(Telerik RAD COmboBox)を入力しようとしています。

ASPXページでComboBoxを定義し、コントローラーでJsonResultを返すアクション呼び出しを定義しました。

私が抱えている問題は、使用しているWebサービスがすでに結果セットをJSON文字列として返していることです。 Webサービスからの応答を直接渡すにはどうすればよいですか。

コードのスニペットは次のとおりです。ASPXページ:

<% Html.Telerik().ComboBox()
                       .Name("cbRefTables")
                       .DataBinding(b => b
                           .Ajax()
                           .Select("GetCALMdata","Common")                    
                       )
                       .Render();
                %>

コントローラー:CommomControllerと呼ばれます

    public JsonResult GetCALMdata()
    {
        CALMwsP.wsCALMSoapClient wsC = new CALMwsP.wsCALMSoapClient("wsCALMSoap");
        string resultset = wsC.GetRefTables("P_1", "P_2", "P_3", "P_4");

        return ??; -- I want to return resultset which is already formatted. 
    }
9
MAB

resultset文字列がすでにJSONである(そしてXMLでラップされていない)場合は、その文字列をコンテンツとして正確に含むContentResultを返します。

_public ContentResult GetCALMdata()
{
    CALMwsP.wsCALMSoapClient wsC = new CALMwsP.wsCALMSoapClient("wsCALMSoap");
    string resultset = wsC.GetRefTables("P_1", "P_2", "P_3", "P_4");

    return Content(resultset, "application/json");
}
_

この場合、JsonResultまたはJson()ヘルパーを使用しないでください。これにより、JSONが再シリアル化されることになります。

16
Dave Ward

ASP.NET MVC 2以降を使用している場合:

return Json(resultset, JsonRequestBehavior.AllowGet);
23
alexl

私が正しく理解していれば、Json()メソッドを使用する必要があります

return Json(resultset);
3
Serghei

個々のJsonメソッド:

return Json(resultset);

System.Web.HttpDLLで、名前空間はSystem.Webです。 .Http.Results

enter image description here


またはウェブサイト全体でこの行をWebApiConfig.csに配置します

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
0
Jeremy Thompson