我将它用于国家和州的级联下拉列表。当我点击 国家下拉列表,假设显示状态,我得到500服务器错误。请帮帮我
单击“国家/地区”下拉列表
时发生错误
[HttpPost]
[ValidateAntiForgeryToken] //this is to prevent CSRF attack
public ActionResult Create(CITIES ci)
{
List<COUNTRIES> allCountry = new List<COUNTRIES>();
List<STATES> allState = new List<STATES>();
using (AdminEntities dc = new AdminEntities())
{
allCountry = dc.COUNTRIES.OrderBy(a => a.COUNTRY_NAME).ToList();
if (ci != null && ci.COUNTRY_ID > 0)
{
allState = dc.STATES.Where(a => a.COUNTRY_ID.Equals(ci.COUNTRY_ID)).OrderBy(a => a.STATE_NAME).ToList();
}
}
ViewBag.COUNTRY_ID = new SelectList(allCountry, "COUNTRY_ID", "COUNTRY_NAME", ci.COUNTRY_ID);
ViewBag.STATE_ID = new SelectList(allState, "STATE_ID", "STATE_NAME", ci.STATE_ID);
if (ModelState.IsValid)
{
using (AdminEntities dc = new AdminEntities())
{
dc.CITIES.Add(ci);
dc.SaveChanges();
ModelState.Clear();
ci = null;
ViewBag.Message = "Successfully Saved";
}
}
else
{
ViewBag.Message = "Failed! Please try again";
}
return View(ci);
}
[HttpGet]
public JsonResult GetStates(string countryID = "")
{
// List<COUNTRIES> allCountry = new List<COUNTRIES>();
List<STATES> allState = new List<STATES>();
int ID = 0;
if (int.TryParse(countryID, out ID))
{
using (AdminEntities dc = new AdminEntities())
{
allState = dc.STATES.Where(a => a.COUNTRY_ID.Equals(ID)).OrderBy(a => a.STATE_NAME).ToList();
}
}
if (Request.IsAjaxRequest())
{
return new JsonResult
{
Data = allState,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
else
{
return new JsonResult
{
Data = "Not valid request",
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
查看
@model BPP.CCSP.Admin.Web.Models.CITIES
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="form-horizontal">
<h4>CITIES</h4>
<hr />
@if(ViewBag.message != true)
{
<div style="border:solid 1px black">
@ViewBag.message
</div>
}
<div class="form-group">
@Html.LabelFor(model => model.COUNTRY_ID, "COUNTRY_ID", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@* @Html.DropDownListFor(model=>model.COUNTRY_ID, new SelectList(string.Empty, "Value", "Text"), "Please select a country", new { @style = "width:250px;" }) *@
@Html.DropDownListFor(model => model.COUNTRY_ID, @ViewBag.COUNTRY_ID as SelectList,"Select Country")
@Html.ValidationMessageFor(model => model.COUNTRY_ID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.STATE_ID, "STATE_ID", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@* @Html.DropDownListFor(model => model.STATE_ID, new SelectList(string.Empty, "Value", "Text"), "Please select a state", new { @style = "width:250px;" }) *@
@Html.DropDownListFor(model => model.STATE_ID, @ViewBag.STATE_ID as SelectList, "Select State")
@Html.ValidationMessageFor(model => model.STATE_ID)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CITY_NAME, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.CITY_NAME)
@Html.ValidationMessageFor(model => model.CITY_NAME)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script language="javascript">
$(document).ready(function () {
$("#COUNTRY_ID").change(function () {
//this will call when country dropdown select change
var countryID = parseInt($("#COUNTRY_ID").val());
if (!isNaN(countryID))
{
var ddState = $("#STATE_ID");
ddState.empty(); //this line is to clear all items from statee dropdown
ddState.append($("<option></option>").val("").html("Select State"));
//here i will call controller action via jquery to load state for selected country
$.ajax({
url: "@Url.Action("GetStates","CITIES")",
type: "GET",
data: {countryID : countryID},
dataType: "json",
success: function (data)
{
$.each(data, function (i, val) {
ddState.append(
$("<option></option>").val(val.STATE_ID).html(val.STATE_NAME)
);
});
}
,
error: function ()
{
alert("Error!");
}
});
}
});
});
</script>
}
请该怎么做
答案 0 :(得分:0)
var data = {"countryID" : countryID};
$.ajax({
url: '@Url.Content("~/CITIES/GetStates")',
type: "GET",
contentType: 'application/json',
data:JSON.stringify(data),
});
然后调试GetStates操作,如果你遇到错误,通常会得到500服务器错误