Мне нужно получить идентификатор из URL-адреса, значение комментария из текстового поля, сохранить его в базе данных и показать на странице с помощью ajax. Я не уверен, как должен выглядеть правильный синтаксис в моем контроллере и функции ajax.

контроллер

[HttpPost] public JsonResult AddComment(int id, string comment) { if (ModelState.IsValid) { return Json(true); // what should be here } return Json(true); } 

Ajax

  $('#submit').click(function () { $.ajax({ url: '/Form/AddComment', method: 'POST', data: { id: 4, //how to get id from url? comment: 'test' //how to get textbox value? }, success: function (data) { console.log(data) }, error: function (a, b, c) { console.log('err') } }) }); 

это просто показывает мне, что это работает, но я не знаю, как двигаться вперед

Исходя из ваших требований, вам нужно будет выполнить соответствующую обработку формы на стороне клиента, чтобы получить такие переменные, как id и comment . Вы можете использовать строго типизированное связывание модели, чтобы получить значения формы и обработать их при отправке, или вы можете использовать методы JavaScript для обработки переменных формы. Чтобы извлечь id из URL, вы можете использовать Regular Expression или другие методы синтаксического анализа строк JavaScript. Я даю вам простой пример получения вашего id из URL и comment из текстового поля с использованием JavaScript:

Ваш элемент управления вводом будет выглядеть так:

 {amp}lt;input type="text" id="commentBox" name="Comment" class="form-control" /{amp}gt; 

Чтобы достичь желаемой функциональности, используя AJAX для отправки переменных формы в контроллер, обратитесь к следующему фрагменту кода:

AJAX:

 {amp}lt;script type="text/javascript"{amp}gt; var url = 'http://www.example.com/4'; //Example URL string var yourid = url.substring(url.lastIndexOf('/')   1); var yourcomment= document.getElementById('commentBox').value; var json = { id: yourid, //4 comment: yourcomment }; $('#submit').click(function (){ $.ajax({ url: '@Url.Action("AddComment", "Form")', type: "POST", dataType: "json", data: { "json": JSON.stringify(json)}, success: function (data) { console.log(data) }, error: function (data) { console.log('err') }, }); }; {amp}lt;/script{amp}gt; 

И вы можете получить свои значения в вашем контроллере следующим образом:

 using System.Web.Script.Serialization; [HttpPost] public JsonResult AddComment(string json) { if (ModelState.IsValid) { var serializer = new JavaScriptSerializer(); dynamic jsondata = serializer.Deserialize(json, typeof(object)); //Get your variables here from AJAX call string id= jsondata["id"]; string comment=jsondata["comment"]; // Do something here with your variables. } return Json(true); } 

Мое решение выглядит так:

контроллер:

  [HttpPost] public JsonResult AddComment(int id_usr,string comment) { if (ModelState.IsValid) { Comments kom = new Comments(); kom.DateComment = DateTime.Now; kom.Id_usr = id_usr; kom.Comment = comment; db.Comments.Add(kom); db.SaveChanges(); return Json(kom); } return Json(null); } 

Посмотреть

 var url = window.location.pathname; var idurl = url.substring(url.lastIndexOf('/')   1); $('#submit').click(function () { console.log('click') $.ajax({ url: '/form/AddComment', method: 'POST', data: { comment: $("#Comments_Comment").val(), id_usr: idurl, }, success: function (data) { console.log(data), 

спасибо всем за руководство к решению