C# 如何从“获取实体id”;“创建动作控制器”;保存新实体后,返回视图上的文本字段
当我在asp.net mvc中创建新实体时,会调用createcontroller,然后: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: {
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,但我不想发帖。