我是MonoRail的新手,我正在试图弄清楚如何拥有它以便我可以在下拉列表中选择父类别,然后让它显示第二个下拉列表,其中包含父类别的子类别。
如果我使用的是我习惯的ASP.NET MVC,我会有一个javascript函数,可以调用第一个下拉列表的更改,并对控制器方法进行ajax调用(传入选定的父级)类别ID)将获取该父类别的所有子类别并以JSON格式返回它们。然后在回调javascript函数中,我将评估JSON并使用子类别填充第二个下拉列表。
我如何使用MonoRail / jQuery执行此操作?这是我到目前为止的代码:
$FormHelper.Select("business.category.id", $categories, "%{value='id', text='name', firstoption='Select a Category'}")
$FormHelper.Select("business.category.id", $childCategories, "%{value='id', text='name', firstoption='Select a Sub-Category'}")
然后在BusinessController.cs中:
private void AddDataToModels()
{
PropertyBag["categories"] = CategoryRepository.GetParentCategories();
PropertyBag["childCategories"] = CategoryRepository.GetChildCategories(1);
}
感谢您提供有关如何处理此问题的任何意见!
贾斯汀
答案 0 :(得分:0)
答案 1 :(得分:0)
对于那些希望从jQuery调用控制器操作并返回JSON ...
的人来说,这是答案控制器方法:
[return: JSONReturnBinder(Properties = "Id,Name")]
public BusinessType[] GetChildBusinessTypes(int parentId)
{
var businessTypes = BusinessTypeRepository.GetChildBusinessTypes(parentId);
return businessTypes;
}
使用Javascript:
$(document).ready(function () {
$('#business_parentbusinesstype_id').change(function () {
jQuery.ajax({
url: "$UrlHelper.For("%{action='$business.site.id/GetChildBusinessTypes'}")",
data: { parentId: $('#business_parentbusinesstype_id').val() },
dataType: 'json',
type: 'GET',
success: fillChildBusinessTypes,
error: ajaxError
});
});
});
function fillChildBusinessTypes(json) {
//get business types.
var businessTypes = eval(json);
//bind business types to dropdown.
$("#business_businesstype_id").get(0).options.length = 0;
$("#business_businesstype_id").get(0).options[0] = new Option("Select a Business Type", "0");
jQuery.each(businessTypes, function(index, item) {
$('#business_businesstype_id').get(0).options[$("#business_businesstype_id").get(0).options.length] = new Option(item.Name, item.Id);
});
//show child dropdown.
Show($('#spnChildBusinessTypes'));
}