Я делаю проект asp.net mvc, и у меня есть действие, как показано ниже:
public ActionResult RegisterCustomer()
{
ViewBagInput();
ViewBag.ProvinceId = new SelectList(db.Province, "ID", "Title");
if (User.Identity.Name != null)
{
var user = db.Users.SingleOrDefault(u => u.Username == User.Identity.Name);
Role.RoleTitle = user.Roles.RoleTitle;
DataLayer.ViewModels.User.FullName = user.FirstName + " " + user.LastName;
}
return View();
}
это действие возвращает представление ниже и отправляет «ViewBag.ProvinceId» этому представлению (этот viewbagотправляет список providID ProvinceTitle в это представление для отображения в DropDownList для провинции, что Id этого раскрывающегося списка "ProvinceId"):
@using (Ajax.BeginForm("RegisterCustomer", "Customer", FormMethod.Post, new AjaxOptions()
{
OnSuccess = "success",
UpdateTargetId = "listUsers"
},
new { @Id = "theform" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div class="form-group has-feedback">
@Html.EditorFor(model => model.identificationNo, new { htmlAttributes = new { @class = "form-control", placeholder = Html.DisplayNameFor(x => x.identificationNo) } })
@Html.ValidationMessageFor(model => model.identificationNo, "", new { @class = "text-danger" })
</div>
<div class="form-group has-feedback">
@Html.EditorFor(model => model.FirstName, new { htmlAttributes = new { @class = "form-control", placeholder = Html.DisplayNameFor(x => x.FirstName) } })
@Html.ValidationMessageFor(model => model.FirstName, "", new { @class = "text-danger" })
</div>
<div class="form-group has-feedback">
@Html.EditorFor(model => model.LastName, new { htmlAttributes = new { @class = "form-control", placeholder = Html.DisplayNameFor(x => x.LastName) } })
@Html.ValidationMessageFor(model => model.LastName, "", new { @class = "text-danger" })
</div>
<div class="form-group">
@Html.DropDownList("ProvinceId", null, "- choose a province- ", htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ProvinceId, "", new { @class = "text-danger" })
</div>
<div class="form-group has-feedback" id="divcities">
@Html.DropDownListFor(model => model.CityId, Enumerable.Empty<SelectListItem>(), "- choose a city -", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CityId)
</div>
}
И у меня ниже jquery в этом представлении:
@section Scripts{
<script type="text/javascript">
$(function() {
$("#ProvinceId").change(function() {
debugger;
$.ajax({
url: "/Customer/GetCities",
data: { stateid: $("#ProvinceId").find(":selected").val() },
type: "Post",
dataType: "Html",
success: function(result) {
$("#divcities").html(result);
},
error: function() {
alert("error!");
}
});
});
});
</script>
Этот jquery вызывает действие ниже:
public ActionResult GetCities(int stateid)
{
ViewBag.CityId = new SelectList(db.City.Where(p => p.ProvinceID == stateid), "ID", "Title");
return PartialView("CityPartialViewForCustomer");
}
, и это действие возвращает частичное представление:
@model DataLayer.ViewModels.CustomerViewModel
<div class="control">
@Html.DropDownList("CityId", null, "- Choose a City ... -", new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CityId)
</div>
Моя первая проблема заключается в том, что эти заполнители не позволят мневведите этот DropDownList и DropDownListFor и как я могу решить эту проблему?Вторая и самая важная проблема заключается в том, что DropDownList и DropDownListFor не доступны для поиска. Как я могу решить эту проблему?