2013-10-09 49 views
-1

我正在使用ajax調用命中數據庫來加載下拉列表。現在,我們現在正在努力工作,現在有人想出瞭如何去做。使用ByRef通過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。事實上,一位同事幫助我與控制員,他不在這裏協助進一步處理這件事。

我的上司提出的問題是我們如何做這項工作?

如果控制器類的ByVal變更爲ByRef,我們可以通過在在Ajax調用的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'將無法幫助我將ajax調用通用化,我是否正確? – Kendra

+0

你是對的。實際上,我們很少在VB.NET中使用ByRef(默認是ByVal,ByRef是爲了兼容性)。我可以安全地從未在生產中使用過ByRef,但我可以看到它的用途。 – TEK

+0

我明白了...這讓事情變得更加清晰。似乎我對他的原始答案是正確的。感謝您幫助我。 – Kendra

相關問題