я сделал обширный поиск, чтобы получить некоторые рекомендации, у меня есть выпадающий список:asp.net MVC 5 Jquery каскадная раскрывающиеся заполнит текстовые поля
<div class="form-group-sm">
@Html.LabelFor(model => model.CustomerId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.CustomerId, new SelectList(ViewBag.CustomerList, "Value", "Text"), new { @class = "form-control", id = "CustomerId" })
@*<input id="test" type="text" />*@
@Html.ValidationMessageFor(model => model.CustomerId, "", new { @class = "text-danger" })
</div>
</div>
... что каскады в этот список:
<div class="form-group-sm">
@Html.LabelFor(model => model.ShipToId, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<select id="ShipToId" name="ShipToId" class="form-control"></select>
@Html.ValidationMessageFor(model => model.ShipToId, "", new { @class = "text-danger" })
</div>
</div>
мне нужно взять ShipToId из вышеупомянутых и грейферных полей для следующих текстовых полей (я не буду перечислять их все здесь, но с некоторым руководством я могу понять, как заполнить Mulitple поля):
<div class="form-group-sm">
@Html.LabelFor(model => model.Address1, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Address1, new { htmlAttributes = new { @class = "form-control", id = "Address1" } })
@Html.ValidationMessageFor(model => model.Address1, "", new { @class = "text-danger" })
</div>
</div>
У меня есть следующий JQuery, который заполнит мои каскадные DropDownLists для CustomerId и ShipToId:
$(document).ready(function() {
$.getJSON('/Order/GetCustomerIds/' + $('#CustomerId option:selected').val(), function (data) {
var items = '<option value="">Select ShipTo</option>';
$.each(data, function (i, ShipToIdSelectList) {
items += "<option value='" + ShipToIdSelectList.Value + "'>" + ShipToIdSelectList.Text + "</option>";
});
$("#ShipToId").html(items);
//$(function() {
// $("#State").val(StateCode);
//})
})
})
$('#CustomerId').change(function() {
$.getJSON('/Order/GetCustomerIds/' + $('#CustomerId').val(), function (data) {
var items = '<option>Select ShipTo</option>';
$.each(data, function (i, ShipToIdSelectList) {
items += "<option value='" + ShipToIdSelectList.Value + "'>" + ShipToIdSelectList.Text + "</option>";
});
$("#ShipToId").html(items);
})
})
каскад работает нормально. У меня также есть метод, который будет принимать ShipToId и вернуть список, включая поля, мне нужно:
var sta = (from o in db.Ord
join s in db.ShipTo on o.ShipToId equals s.ShipToId
where o.CompanyId == CurrentCompanyId && s.CustomerId == id
select new
{
ShipToId = o.ShipToId,
Name = s.Name,
Address1 = s.Address1,
Address2 = s.Address2,
Address3 = s.Address3,
Address4 = s.Address4,
City = s.City,
County = s.County,
Country = s.CountryCode,
State = s.StateCode,
PostalCode = s.PostalCode
}).Distinct().ToList();
Результат:
[0] = { ShipToId = "1~0", Name = "Big Head Productions", Address1 = null, Address2 = null, Address3 = null, Address4 = null, City = "Boonville", County = "...", Country = "US", State = "..." ... }
Я имею информацию мне нужно, я просто не знаю, как использовать JQuery, чтобы заполнить правильные текстовые поля. Я не знаю, что это может быть проще с использованием такой структуры, как Angular или Knockout. Какие-либо предложения?
Я думаю, что это правильно. Я буду отмечать ваш ответ как правильно, если это так, и если нет, я предоставлю свой ответ – MeddlingDeveloper