如何从"创建动作控制器"获取实体ID保存新实体后到视图上的文本字段

时间:2014-05-12 13:49:13

标签: c# jquery asp.net-mvc asp.net-ajax

当我在asp.net mvc中创建一个新实体时 - 调用创建控制器,之后:

db.SaveChanges();

我正在使用:

var newID = Client.Id;

如何将此 ID 发送回视图,而不是完整的"回发"页面?

问题是我的asp表现得像#34; spa app"使用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"在看到"作为>>的参数我需要$('#ClientIdTxt')?

1 个答案:

答案 0 :(得分:0)

使用jQuery AJAX执行POST,使用包含ID的JSON消息进行响应,并将其设置在AJAX调用的success事件中。效果很好。

$("#yourFormName").submit(function(event){
  $.ajax({
       type: "POST",
       url: url,
       data: $("#yourFormName").serialize(), // serializes the form's 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