当我在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')?
答案 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