Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从“获取实体id”;“创建动作控制器”;保存新实体后,返回视图上的文本字段_C#_Jquery_Asp.net Mvc_Asp.net Ajax - Fatal编程技术网

C# 如何从“获取实体id”;“创建动作控制器”;保存新实体后,返回视图上的文本字段

C# 如何从“获取实体id”;“创建动作控制器”;保存新实体后,返回视图上的文本字段,c#,jquery,asp.net-mvc,asp.net-ajax,C#,Jquery,Asp.net Mvc,Asp.net Ajax,当我在asp.net mvc中创建新实体时,会调用createcontroller,然后: db.SaveChanges(); 我正在使用: var newID = Client.Id; 如果没有完整的“回发”页面,我如何将此Id发送回视图 问题是我的asp就像“spa应用程序”一样,使用jQuery将内容加载到我的拆分窗格中 js代码: $('form').validate({ rules: { ....... }, messages: {

当我在asp.net mvc中创建新实体时,会调用createcontroller,然后:

db.SaveChanges();
我正在使用:

var newID = Client.Id;
如果没有完整的“回发”页面,我如何将此Id发送回视图

问题是我的asp就像“spa应用程序”一样,使用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“behind the seen”作为>>$(“#ClientIdTxt”)的参数获取?

使用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
Context.Response.Write(“{\“Success\”:true,\“Key\”:“+yourObject.Id+”);

返回null//显示操作和视图我正在使用此函数在我的cshtml中编辑:submitHandler:function(form){$.ajax({url:form.action,type:form.method,data:$(form.serialize(),success:function(response){$(“#result”).html(“saved”);}}}}然后使用json从控制器发送新密钥。查看控制器中的示例。查看我的答案,我更新了它。您需要通过调用
.preventDefault()来阻止
classic
post;
将ajax调用中的
url
属性更改为您想要的任何控制器/操作。我确实添加了preventDefault()并仍然将页面发帖返回到此链接,我看到这个>>{“Success”:true,“Key”:7799}:这是写id,但我不想发帖。