use*_*925 6 ajax jquery asp.net-mvc-3
我正在尝试使用JQuery Ajax将表单的数据传递给我的控制器方法,但是当我在Controller端使用调试器时,我不确定你是如何做到的,因为我的ViewModel为null.
我的ViewModel是:
public class PremisesViewModel
{
public string createPremisesErrorMessage { get; set; }
public string updatePremisesErrorMessage { get; set; }
public SelectList listOfCounties = Initialise.countiesSelectList;
public Premise premises { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
其中premises是我数据库中的实体/表.
表单包含Premises表中的字段.
在我的javascript函数中,我这样做:
var premisesViewModel = {
Id: 0,
PremisesDescription: $('#premises_PremisesDescription').val(),
OrdnanceSurveyReference: $('#premises_OrdnanceSurveyReference').val(),
PartRestrictedNotes: $('#premises_PartRestrictedNotes').val(),
NatureOfPremises: $('#premises_NatureOfPremises').val(),
AddressLine1: $('#premises_AddressLine1').val(),
AddressLine2: $('#premises_AddressLine2').val(),
Town: $('#premises_Town').val(),
CountyId: $('#premises_CountyId').val(),
Postcode: $('#premises_Postcode').val()
}
alert(form.serialize);
$.ajax({
url: form.attr('action'),
type: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(premisesViewModel),
success: function (data) {
alert('done');
}
})
Run Code Online (Sandbox Code Playgroud)
但是,当我检查my方法中的viewModel参数时,它为null:
[HttpPost]
public JsonResult Create(PremisesViewModel pvm)
{
return null;
}
Run Code Online (Sandbox Code Playgroud)
关于如何映射这个以便正确绑定视图模型的任何想法.谢谢
您的JSON格式与您的模型类完全相同.
目前的例子
public class PremisesViewModel
{
public string createPremisesErrorMessage { get; set; }
public string updatePremisesErrorMessage { get; set; }
public SelectList listOfCounties = Initialise.countiesSelectList;
public Premise premises { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你的JSON喜欢
var premisesViewModel = {
createPremisesErrorMessage : $('#premises_PremisesDescription').val(),
updatePremisesErrorMessage: $('#premises_OrdnanceSurveyReference').val(),
premises : {Define more properties here as per your Premise structure}
}
Run Code Online (Sandbox Code Playgroud)
如果要从表单的绑定视图模型自动构建模型,可以使用此答案/sf/answers/83041661/中的代码正确序列化为JSON对象.
然后,您需要将其作为字符串传递给$ .ajax调用.总而言之,与您原来的非常相似.就像是:
var premisesViewModel = $('form').serializeObject();
$.ajax({
url: form.attr('action'),
type: 'POST',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(premisesViewModel),
success: function (data) {
alert('done');
}
});
Run Code Online (Sandbox Code Playgroud)
很奇怪,没有核心函数可以转换为JSON对象,但是你去了.
| 归档时间: |
|
| 查看次数: |
17694 次 |
| 最近记录: |