Я думаю, что проблема в данных, которые вы отправляете с AJAX.Попробуйте этот вызов ajax
<script>
$( function()
{
$("#ask-btn").on('click', function () {
var dataToSend = $("#ask-txt").val();
$.ajax({
type: "POST",
url: "/SomebodysPage/Asker",
data: {question: JSON.stringify(dataToSend) },
contentType: "application/json;",
success: function (response) {
if(response) { alert("It's alright."); }
else { console.log(response); }
},
error: function(response) {
console.log(response);
}
});
});
})
</script>
Кроме того, поскольку вы передаете строку JSON, контроллер ожидает строку, а не объект типа Question
.Вы должны десериализовать строку в объект типа Question
примерно так:
[HttpPost]
public JsonResult Asker(string question)
{
Question q = new Question();
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
try {
//try to convert string to an object of type Question
q = (Question)json_serializer.DeserializeObject(question);
}
catch(Exception e) {
return Json(q);
}
//Now we have an object of type Question from the json
db.Users.FirstOrDefault(x => x.UserId == 1).Questions.Add(q);
db.SaveChanges();
return Json(q);
}