This site helped me a lot, so i am giving back something. cheers ! This code works without any error.Thanks
JavaScript
<pre> <script type="text/javascript">
$(document).ready(function () {
$("#Typeid").change(function () {
var dID = $('#Typeid option:selected').val();
$.getJSON("../Manage/GETSubType", { Typeid: dID },
function (data) {
var select = $("#subtypeid");
select.empty();
select.append($('<option/>', {
value: 0,
text: "Select project sub-types"
}));
$.each(data, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});
});
</script>
Controller
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GETSubType(string Typeid)
{
dbproject = new DbProject();
return Json(dbproject.ProjectType_SubTypeList(Convert.ToDouble( Typeid)), JsonRequestBehavior.AllowGet);
}
Method in class
<pre> public List<SelectListItem> ProjectType_SubTypeList(double id)
{
var subtypes = from u in db.SubType where u.ProjectTypeID==id.ToString() select u;
List<SelectListItem> ProjectsubTypes = new List<SelectListItem>();
ProjectsubTypes.Clear();
if (subtypes!=null)
{
foreach(var subtype in subtypes)
{
ProjectsubTypes.Add(new SelectListItem { Text = subtype.name, Value = subtype.id.ToString() });
}
}
return ProjectsubTypes;
}
View
<pre> <div class="form-group">
<div class="form-group col-md-6 col-sm-6 col-xs-12 has-feedback">
@Html.DropDownListFor(model => model.Project.ProjectType, new SelectList(ViewBag.Type as System.Collections.IEnumerable, "Value", "Text"), new { @class = "form-control", @id = "Typeid" })
@Html.ValidationMessageFor(model => model.Project.ProjectType, "", new { @class = "text-danger" })
</div>
<div class="form-group col-md-6 col-sm-6 col-xs-12 has-feedback">
@Html.DropDownListFor(model => model.Project.SubProjectID, new SelectList(Enumerable.Empty<SelectListItem>(), "id", "name"),
"Select project sub-types", new { @class = "form-control", @id = "subtypeid" })
@Html.ValidationMessageFor(model => model.Project.SubProjectID, "", new { @class = "text-danger" })
</div>
</div>