我正在使用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:
行的内容,以便可以重用此代码而不是改写?
非常感谢任何帮助或澄清。
答案 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