2013-10-09 5 views
-1

ajax 호출을 사용하여 데이터베이스를 눌러 드롭 다운을로드합니다. 지금, 이것은 누군가가 그것을하는 방법을 알아 냈으니, 우리가 일하는 곳에서 우리가 많이하고있는 일이 될 것입니다.ByVal을 통해 ByVal을 사용하여 데이터베이스에 도달

내 관리자가 새 페이지마다 코드를 다시 수행 할 필요없이 여러 페이지 등에서 쉽게 사용할 수있는 Ajax 호출을 요청했습니다. 내 코드 :

컨트롤러

Function Index(ByVal KovID As String) As JsonResult 
    Dim db As New Database1Entities 
    Dim record As New List(Of BodyStyle) 
    record = (From b In db.BodyStyles Where b.KovID = KovID Select b).ToList 
    Return Json(record, JsonRequestBehavior.AllowGet) 
End Function 

JQuery와는

function ajaxSuccess(record) { 
    var drop2 = $('#Vehicle_BodyStyle_value'); 
    drop2.get(0).options.length = 0; 
    drop2.get(0).options[0] = new Option("Please Select One", "-1"); 
    $.each(record, function (index, item) { 
     drop2.get(0).options[drop2.get(0).options.length] = new Option(item.BodyStyle1, index); 
    }); 
} 

function ajaxError() { 
    $('#Vehicle_BodyStyle_value').get(0).options.length = 0; 
    $('#Vehicle_BodyStyle_value').get(0).options[0] = new Option("Error!", "-1"); 
    alert("Failed to load styles"); 
} 

$('#Vehicle_KovId_value').change(function() { 
    var kovID = $(this).val(); 
    var drop2 = $('#Vehicle_BodyStyle_value'); 
    if (kovID != null && kovID != '') { 
     drop2.get(0).options.length = 0; 
     drop2.get(0).options[0] = new Option('Please Select One', '-1'); 
     $.ajax({ 
      type: "GET", 
      url: '/Ajax/Index', 
      async: false, 
      data: { KovID: kovID }, 
      contentType: "application/json; charset=utf-8", 
      success: ajaxSuccess, 
      error: ajaxError 
     }); 
    } 
}); 

지금, 나는 VB.NET을 모른다. 사실, 동료가 컨트롤러를 도와 주었고,이 문제에 대해서는 더 이상 지원하지 않습니다.

제 상사가 제기 한 제 질문은 어떻게 할 수 있습니까? 이 코드는 재사용 및 재 작성하지 될 수 있도록 컨트롤러 클래스의 ByValByRef로 변경되면

, 우리는 아약스 호출에서 data: 라인에 뭔가를 전달할 수 있습니다?

도움이나 설명을 보내 주시면 대단히 감사하겠습니다.

+0

'ByRef'와'ByVal'과 그 차이점에 대해 읽는 중이며 나에게 전혀 걸림이되지 않습니다. 따라서 내가 이해하는 방식으로 차이를 설명하는 것조차도 내 질문에 답할 수있을 것입니다. – Kendra

답변

3

ByVal을 전달하면 복사본의 복사본을 전달합니다. ByRef (참조로)를 전달하면 참조 (단순히 원본 변수를 전달)을 전달합니다.

Dim exampleVariable As String = "hello" 

MyMethodOne(exampleVariable) 'Call methodOne (We pass a COPY of exampleVariable) 


Private Sub MyMethodOne(ByVal x As String) 
     x = "Foo" 
     Console.WriteLine(x) 'prints Foo 
     Console.WriteLine(exampleVariable) 'prints hello 
End Sub 

MyMethodTwo(exampleVariable) 'Call method (we pass the REFERENCE to exampleVariable) 
Private Sub MyMethodTwo(ByRef x As String) 
     x = "Foo" 
     Console.WriteLine(x) 'prints Foo 
     Console.WriteLine(exampleVariable) 'prints Foo 
End Sub 
+0

이것은 나에게 의미가 있기 시작한 것입니다 ... 그래서 지금까지 보았던 것에서, 내 컨트롤러에서 ByVal을 ByRef로 변경하면 내 아약스 호출을 보편화하는 데 성공하지 못할 것입니다. ? – Kendra

+0

정확합니다. 실제로 VB.NET에서는 ByRef를 거의 사용하지 않습니다 (기본값 ByVal, ByRef는 호환성을 위해 있습니다). 나는 안전하게 ByRef를 프로덕션에서 사용하지 않았지만, 그 사용법을 볼 수있다. – TEK

+0

나는 그것을 본다. 그것은 나를 위해 물건을 더 분명하게 만든다. 그 사람에 대한 내 원래의 대답이 옳았던 것처럼 보입니다. 이걸 도와 주셔서 고맙습니다. – Kendra