Как заполнить поле формы выпадающим списком в ASP.NET mvc5 с entity framework с использованием ajax
Я пытаюсь заполнить CreditTobeTakenTextBox автоматически после выбора элемента выпадающего списка "TeacherId". У меня есть таблица учителей в базе данных, где TeacherId является первичным ключом, и я пытаюсь получить CreditToBeTaken конкретного учителя. Но это не работает. Я видел подобные примеры в codeproject, но они не работают для меня. Я думаю, что в моем вызове ajax есть проблема. Пожалуйста, кто-нибудь, помогите мне.
Что я уже пробовал:
Действие:
public JsonResult CreditToBeTaken(int id)
{
дБ.Конфигурации.ProxyCreationEnabled = false;
строку кредитной = "выбрать CreditToBeTaken от учителя, где TeacherId='"+идентификатор+"'";
ВАР creditsToBeTaken = дБ.Учителя.SqlQuery(кредит);
вернуть в формате JSON(creditsToBeTaken);
}
Смотреть:
@Html. LabelFor(model = & gt; model.TeacherId, "TeacherId", htmlAttributes: new { @class = " control-label col-md-2" })
@Html. DropDownList ("TeacherId", new SelectList (string.Пустые, "значение", "текст"), "выбор учителя", htmlAttributes: новые { @класс = "форма контроля" })
@Html. ValidationMessageFor(model = & gt; model.TeacherId,"", new { @class = " text-danger" })
@Html. LabelFor(model = & gt; model.CreditToBeTaken, htmlAttributes: new { @class = " control-label col-md-2" })
@Html. EditorFor(model = & gt; model.CreditToBeTaken, новые { @идентификатор = "creditTobeTakenTextBox", @класс = "форма контроля" }
@Html. ValidationMessageFor(model = & gt; model.CreditToBeTaken,"", new { @class = " text-danger" })
файл сценария:
& lt;скрипт>
$(документ).готово(функция () {
$("#TeacherId"). change(функция () {
$.Аякс({
url: '@Url. Action ("CreditToBeTaken")',
тип: "пост",
тип данных: 'json',
данные: { teacherID: $("#TeacherId"). val() },
contentType: 'application/json; charset=utf-8',
успех: функция (данные) {
если (данные.успех) {
// заполните кредит, который будет взят
$("#CreditToBeTakenTextBox"). val (data. creditsToBeTaken);
}
ещё {
// показать сообщение в предупреждении или div
alert ('этот идентификатор учителя недействителен. Попробуй еще раз!);
}
}
});
});
});
< / script>
Richard Deeming
НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
В этот конкретный экземпляр, вы не сразу уязвимы для SQL-инъекция[^], так как параметр уже был проанализирован как целое число. Однако, если вы привыкнете писать такой код, то слишком легко забыть и использовать этот шаблон с пользовательскими строками, которые было бы стать уязвимым.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов / OWASP[^]