Проблема в том, что вы используете этот метод действия с mail
в качестве имени параметра:
public JsonResult Search(string mail)
, но в свойстве data
вашего AJAX-вызова содержится параметр Email
, как показано ниже,не соответствует имени параметра, определенному в методе действия контроллера:
$.ajax({
type: 'GET',
url: "/SearchById/Search",
dataType: 'json',
data: {
Email: model.Email, // this is the wrong part
},
success: function (run) {
// show the results
},
error: function () {
console.log('something went wrong - debug it!');
}
});
Чтобы соответствовать имени параметра AJAX, вы должны изменить имя параметра действия на Email
:
public JsonResult Search(string Email)
{
var str = (from test in ob.Emp
where test.EmailId == Email
select test).FirstOrDefault();
return Json(str, JsonRequestBehavior.AllowGet);
}
Иначесохранить действие контроллера как есть, но изменить имя параметра AJAX, чтобы оно совпадало с именем параметра действия контроллера:
$.ajax({
type: 'GET',
url: "/SearchById/Search",
dataType: 'json',
data: {
mail: $("#exampleInputEmail1").val() // this is correct
},
success: function (run) {
// show the results
},
error: function () {
console.log('something went wrong - debug it!');
}
});
Обновление:
Если run
содержит JSONстрока вместо объекта, вам нужно сначала проанализировать строку:
var obj = JSON.parse(run);
, а затем использовать этот объект для отображения значений:
$("#ide").val(obj.EmailId);
$("#nm").val(obj.Name);