使用ByRef over ByVal来命中数据库

时间:2013-10-09 14:49:41

标签: ajax vb.net byref byval

我正在使用ajax调用来命中数据库来加载下拉列表。现在,这是我们现在要做的很多工作,因为有人知道如何去做。

我的主管要求我尝试将我的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:行的内容,以便可以重用此代码而不是改写?

非常感谢任何帮助或澄清。

1 个答案:

答案 0 :(得分: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