2010-12-27 10 views
0

あなたはこのコードを簡略化できますか?もっとシンプルにするためにできることはありますか?私は確信していませんが、それは私には醜いようです。Json可能な場合、単純化するリターンコード

[HttpPost] 
     public JsonResult UserDetailById(int userId, string username) 
     { 
      IQueryable<Company> repository = companyRepository.GetGridCompanies(); 
      Employee emp = companyRepository.GetEmployee(userId); 

      //Drop down fill 
      var a = (from c in repository 
         .OrderBy(c => c.companyName) 
         select new 
         { 
          Id = c.companyID, 
          Name = c.companyName 

         }).ToArray(); 

      var data = new 
      { 
       Id = emp.companyID.ToString(), 
           Name = emp.employeeFirstname + " " + emp.employeeLastname, 
           Fn = emp.employeeFirstname, 
           Ln = emp.employeeLastname, 
           Dept = emp.employeeDepartment, 
           Sup = emp.employeeSup.ToString(), 
           HireDate = String.Format("{0:MM/dd/yyyy}", emp.employeeHiredate), 

          CompVm = a 
      }; 


      return Json(data); 
     } 

答えて

0

json-dataを構築する2番目の部分は、json-serializerとして使用することで簡略化できます。私はJson.Netを使用します。このシリアライザは自動的にクラスのJSONを読み書きします。

私は完全にあなたが正確にあなたが簡素化テ試みるコードでやっていることを得ることはありませんが、あなたがdata = JsonConvert.SerializeObject(repository)でコードを交換するときに正しい方向への一歩となり、私は

+0

Json.Netは私が望むものです:)。ありがとう – Pirzada

1

を推測これはどのようにあります私はjQueryのAJAXとのwebMethodsを行います

WebMethod属性:

[WebMethod] 
public object populatePgSubCategory(string catId) 
{ 
    StoreDataContext db = new StoreDataContext(); 

    var a = from n in db.SubCategories 
      where n.CategoryID == int.Parse(catId) 
      orderby n.SubCategoryName 
      select new 
      { 
       x = n.SubCategoryName, 
       y= n.SubCategoryID 
      }; 
     return a; 
} 

jQueryのAJAX:

$.ajax({ 
      type: "POST", 
      url: "/WebService_VehicleDisplay.asmx/populatePgSubCategory", 
      data: "{catId:"+"'"+n+"'"+"}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function (msg) { 
       var response = msg.d; 
       $("#ddlSubCat").empty(); 
       $.each(response, function (key,val) { 
        $('#ddlSubCat').append(new Option(val.x, val.y)); 
       }); 
      }, 
      failure: function (msg) { 
       alert('failure'); 
      } 
     }); 
関連する問題