Waheed-uz-zaman Mukit Ответов: 2

Как заполнить поле формы выпадающим списком в 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[^]

2 Ответов

Рейтинг:
2

F-ES Sitecore

Во-первых, "не работает" для нас ничего не значит. В случае пожара? Работает ли ваш ajax-код? Вызывает ли он ваш метод? Вы получаете ошибки? Возвращает ли метод данные? Получает ли ваша функция данные? Выполняется ли событие успеха? Можете ли вы найти свои элементы? Может ли он найти в данных то, что ему нужно?

Вам нужно научиться отлаживать свой код и проходить через него, чтобы знать, в какой момент он выходит из строя, посмотрите на эту ссылку, которая показывает вам, как использовать инструменты разработчика браузера, чтобы помочь вам

Использование инструментов разработчика браузера&#39; s для диагностики проблем ajax (и других вещей) | The ASP.NET форумы[^]

Одна вещь, которую я сразу вижу, заключается в том, что имя параметра действия "id" не соответствует данным, которые вы отправляете ему ("teacherID"). Если вы загуглите, как вызвать действие MVC из jQuery ajax, вы найдете сотни учебников, где это описано, пожалуйста, проведите фундаментальное исследование, прежде чем задавать вопрос. Кроме этого, в вашем коде вполне могут быть и другие проблемы (например, ваш contenttype может быть неправильным), но просмотр большего количества примеров в интернете и использование отладки должны помочь вам в вашем пути.


Рейтинг:
2

Karthik_Mahalingam

Изменить id к teacherID

public JsonResult CreditToBeTaken(int teacherID )

Пока это ошибка, остальное вы должны отладить и найти проблему. Проверьте Решение 1 на предмет отладки.