Исходя из ваших требований, вам нужно будет выполнить соответствующую обработку формы на стороне клиента, чтобы получить такие переменные, как id
и comment
.Вы можете использовать строго типизированное связывание модели, чтобы получить значения формы и обработать их при отправке, или вы можете использовать методы JavaScript для обработки переменных формы.Чтобы извлечь id
из URL, вы можете использовать Regular Expression
или другие методы анализа строк JavaScript.Я приведу простой пример получения id
из URL и comment
из текстового поля с использованием JavaScript:
Ваш элемент управления вводом будет выглядеть так:
<input type="text" id="commentBox" name="Comment" class="form-control" />
InЧтобы достичь желаемой функциональности, используя AJAX для отправки переменных формы в контроллер, обратитесь к следующему фрагменту кода:
AJAX:
<script type="text/javascript">
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')
},
});
};
</script>
И вы можете получить свои значения в вашем контроллере, напримерэто:
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);
}