#jquery #asp.net-mvc #asp.net-mvc-partialview
#jquery #asp.net-mvc #asp.net-mvc-partialview
Вопрос:
У меня есть представление с вкладками начальной загрузки, и на 2 вкладках у меня есть PartialView, PartialView для адреса, а другой PartialView для контакта.
Адрес PartialView выглядит следующим образом..
<script src="~/Scripts/Custom/Common/CommonControlsJS.js"></script>
<div class="form-horizontal">
<div class="form-group">
<label for="txtAddress1" class="control-label col-md-2" id="lblAddress1">Line 1</label>
<div class="col-md-10">
<input id="txtAddress1" type="text" class="form-control max-size" name="address" placeholder="Line 1" />
</div>
</div>
<div class="form-group">
<label for="txtAddress2" class="control-label col-md-2" id="lblAddress2">Line 2</label>
<div class="col-md-10">
<input id="txtAddress2" type="text" class="form-control max-size" placeholder="Line 2" />
</div>
</div>
<div class="form-group">
<label for="txtCity" class="control-label col-md-2" id="lblCity">City</label>
<div class="col-md-10">
<input id="txtCity" type="text" class="form-control max-size" name="city" placeholder="City" />
</div>
</div>
<div class="form-group">
<label for="txtState" class="control-label col-md-2" id="lblState">State</label>
<div class="col-md-4">
<input id="txtState" type="text" class="form-control" name="state" placeholder="State" />
</div>
<label for="txtZip" class="control-label col-md-2" id="lblZip">Zip/Postal</label>
<div class="col-md-4">
<input id="txtZip" type="text" class="form-control" name="zip" placeholder="Zip/Postal" />
</div>
</div>
<div class="form-group">
<label for="acCountries" class="control-label col-md-2" id="lblCountry"><b>Country</b></label>
<div class="col-md-10">
<select id="acCountries" class="form-control" name="country"></select>
</div>
</div>
</div>
и мой контакт PartialView выглядит так…
<script src="~/Scripts/Custom/Common/CommonControlsJS.js"></script>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-md-2" for="txtContactType">Contactamp;nbsp;Type:</label>
<div class="col-md-9">
<input class="form-control fixed-form-control" id="ddContactType" placeholder="ContactType" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="txtContact">Contact:</label>
<div class="col-md-9">
<input class="form-control fixed-form-control" id="txtContact" placeholder="Contact" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="txtPhone">Home:</label>
<div class="col-md-9">
<input class="form-control fixed-form-control" id="txtPhone" placeholder="Home" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="txtWork">Work:</label>
<div class="col-md-9">
<input class="form-control fixed-form-control" id="txtWork" placeholder="Work" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="txtFax">Fax:</label>
<div class="col-md-9">
<input class="form-control fixed-form-control" id="txtFax" placeholder="Fax" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="txtMobile">Mobile:</label>
<div class="col-md-9">
<input class="form-control fixed-form-control" id="txtMobile" placeholder="Mobile" />
</div>
</div>
</div>
В адресе PartialView у меня есть выпадающий элемент управления с именем acCountries, он заполняется из моего файла CommonControlsJS, и это код
$(document).ready(function () {
CommonControlLibrary.GetCountries();
});
var CommonControlLibrary = {
GetCountries: function () {
var self = this;
$.ajax({
type: "GET",
url: "/Common/GetCountries?id=" 21,
dataType: "JSON",
contentType: "application/json; charset=utf-8",
success: function (data, textStatus, jqXHR) {
self.ShowCountries(data);
}
});
},
ShowCountries: function (countryData) {
$("#acCountries").kendoDropDownList({
dataSource: countryData,
dataTextField: "dictionaryName",
dataValueField: "dictionaryItemID",
animation: false,
optionLabel: {
dictionaryName: "-- Select Country --",
dictionaryItemID: "0"
}
})
}
}
У меня есть вкладка «Производитель» и вкладка «Дилер», каждая из этих вкладок содержит адрес PartialView и Contact PartialView, проблема, с которой я сталкиваюсь, заключается в том, что заполняется раскрывающийся список учетных записей Address PartialView, но адрес PartialView в раскрывающемся списке учетных записей вкладки «Дилер» не заполняется, и я понятия не имею, почему.
Поскольку это происходит в адресном PartialView, я знаю, что столкнусь с этой проблемой с Contact PartialView, потому что я добавлю туда выпадающий список для типа контакта.
Что может быть причиной того, что один адрес в раскрывающемся списке PartialView acCountries заполняется, а второй адрес в раскрывающемся списке PartialView acCountries не заполняется?
Редактировать
Как выглядит использование класса вместо идентификатора
Комментарии:
1. Если вы дублируете эти части, то у вас есть повторяющиеся
id
атрибуты, которые являются недопустимым html (вместо этого используйте имена классов)2. @StephenMuecke, я попробовал, как вы предложили, и это сработало. Тем не менее, я только что внес правку в свой вопрос и добавил скриншот на основе вашего предложения, и теперь макет не работает. Есть идеи, почему это происходит, или, может быть, другой способ сделать это?
3. Я предполагаю, что это просто проблема стиля. Но трудно понять, что вы пытаетесь здесь сделать. Многие из ваших элементов управления даже не имеют атрибутов name, вы не привязаны к модели, она никогда не сможет корректно привязываться к модели при отправке и т.д. Вы пометили этот asp.net-mvc, но все, что вы делаете, противоречит mvc. И почему вы все равно заполняете выпадающий список, используя ajax, вместо того, чтобы передавать значения в представление в первую очередь?
4. Да, вероятно, просто проблема со стилем.. Вы поднимаете много хороших вопросов. Когда проект был запущен, было решено, что мы вообще не будем использовать Razor. Мы широко используем jQuery в этом проекте. Я пометил это в mvc, потому что это проект mvc, но я вижу, откуда вы пришли, возможно, мне не следовало помечать это с помощью MVC, но это не главное. Я бы не согласился с тем, что этот подход противоречит mvc, мы все еще используем MVC, просто не используем Razor. Для вашего последнего вопроса мы используем KendoUI и любим быть сложными, а не использовать razor
![]()
5. @StephenMuecke, я исправил проблему со стилем… Если вы хотите добавить свой комментарий в качестве ответа, пожалуйста, сделайте это, потому что это было правильно