как получить идентификатор объекта из «создать контроллер действия» в текстовое поле в представлении после сохранения нового объекта

0

Когда я создаю новый объект в 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'), как мне нужно?

  • 1
    показать вам действие и вид
Теги:
asp.net-mvc
asp.net-ajax

1 ответ

0

Выполните 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
  • 0
    Я использую эту функцию для редактирования в моем cshtml: submitHandler: function (form) {$ .ajax ({url: form.action, type: form.method, data: $ (form) .serialize (), success: function (ответ) {$ ('# result'). html ("сохранено");}}); }
  • 0
    затем отправьте ваш новый ключ с контроллера с помощью json. посмотри мой пример в контроллере.
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню