Когда я создаю новый объект в asp.net mvc - есть вызов для создания контроллера и после:
db.SaveChanges();
Я использую:
var newID = Client.Id;
Как я могу отправить этот идентификатор в представление без полной "обратной связи" страницы?
Проблема заключается в том, что мой asp работает как "приложение для спа" с jQuery для загрузки содержимого в мои панели сплиттеров.
код js:
$('form').validate({
rules: {
.......
},
messages: {
.......
},
highlight: function (element, errorClass) {
$(element).closest('.form-group').addClass('has-error');
},
unhighlight: function (element, errorClass) {
$(element).closest('.form-group').removeClass('has-error');
},
submitHandler: function (form) {
$.ajax({
type: form.method,
url: form.action,
data: $(form).serialize(),
success: function (data) {
//if your return is just text then just convert to JSON
var json = JSON.parse(data);
if (json.Success) {
$('#ClientIdTxt').val(data.Key);
}
}
});
form.preventDefault();
}
});
код контроллера:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = ".......")] alfon alfon)
{
if (ModelState.IsValid)
{
db.alfon.Add(alfon);
db.SaveChanges();
Response.Write("{ \"Success\": true, \"Key\": " + alfon.ClientNum + " }");
return null;
}
return View(alfon);
}
хорошо: я ошибаюсь? почему я получаю новую страницу с Json вместо того, чтобы получить Json "за увиденным" как параметр to >> $ ('# ClientIdTxt'), как мне нужно?
Выполните POST
с помощью jQuery AJAX, ответьте сообщением JSON, которое будет содержать идентификатор и установите его на событие success
вызова AJAX. Прекрасно работает.
$("#yourFormName").submit(function(event){
$.ajax({
type: "POST",
url: url,
data: $("#yourFormName").serialize(), // serializes the form elements.
success: function(data)
{
//if your return is just text then just convert to JSON
var json = JSON.parse( data);
if (json.Success ){
$('#yourElementId').val(data.Key);
}
}
});
event.preventDefault(); //prevent the page from posting
});
В вашем контроллере:
Context.Response.Write("{ \"Success\": true, \"Key\": " + yourObject.Id + " }");
return null; //<-- return a null ActionResult