当前位置: 首页 > 面试题库 >

MVC3使用JQuery Ajax将ViewModel传递给控制器​​方法

钱和安
2023-03-14
问题内容

我正在尝试使用JQuery Ajax将表单的数据传递到我的控制器方法,但是由于在Controller
Side上使用调试器时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; }
}

前提是我数据库中的实体/表。

该表单包含“前提”表中的字段。

在我的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');
        }
    })

但是,当我在方法中检查viewModel参数时,它为null:

  [HttpPost]
    public JsonResult Create(PremisesViewModel pvm)
    {
        return null;
    }

关于如何映射此视图以便正确绑定视图模型的任何想法。谢谢


问题答案:

您的JSON格式与模型类完全相同。

当前示例

public class PremisesViewModel
{

    public string createPremisesErrorMessage { get; set; }
    public string updatePremisesErrorMessage { get; set; }

    public SelectList listOfCounties = Initialise.countiesSelectList;

    public Premise premises { get; set; }
}

你的JSON喜欢

 var premisesViewModel = {
                                    createPremisesErrorMessage : $('#premises_PremisesDescription').val(),
                                    updatePremisesErrorMessage: $('#premises_OrdnanceSurveyReference').val(),    
                                    premises : {Define more properties here as per your Premise structure}
                                }


 类似资料:
  • 问题内容: 如何将ID从此Ajax调用传递给TestController getAjax()函数?当我打电话时,网址是testUrl?id = 1 TestController.php 问题答案: 最后,我只是将参数添加到Route :: get()以及ajax url调用中。我在getAjax()函数中将$ _POST [‘id’]更改为$ _GET [‘id’],这使我的回复 TestCont

  • 问题内容: 我试图通过ajax调用将模型传递给控制器​​。 我已经看过Laviak在以下问题中提供的答案,但无法使其正常工作。 运行ajax调用时,MODEL变量出现未定义的错误。我已经确认正在调用助手类,并且正在返回字符串。是否因为AJAX调用位于.js文件中?为什么未定义? 我的代码: Site.Master: 助手类: Javascript文件: 动作方法: 问题答案: 确保在主文件中定义变

  • 因此,在我的Javascript中,我使用的是表单序列化,输出是正确的 (issubmit=1) 当我试图将其传递给我的控制器时,我什么也得不到,。我做错了什么? Jquery: 控制器:

  • 问题内容: 我想将一个对象传递给控制器​​,并在控制器中检索值。我定义如下: HTML代码: Javascript: 但是我无法在控制器中检索值。它越来越空。 问题答案: 尝试以下操作:-您正在传递对象数组,因此您应该执行HTTPPost而不是HttpGet(这将适用于通过查询字符串发送它的原始类型数组,例如int,strgin等列表)(请记住查询字符串的限制)。尝试使用HTTPPost

  • 问题内容: 我有多个调用同一控制器的路由,我想将不同的变量传递给它。 我知道我可以使用“解决”对象: 传递值作为依赖项: 这种方法的问题是,如果其他路线上缺少resolve对象,则我的应用程序崩溃,并且我想传递可选的参数。 有什么方法可以(从路由提供者)将特定的参数传递给Controller? 谢谢 问题答案: 路由: 访问:在控制器中注入$ route,然后使用它

  • 我正在尝试在更改选项后将我的Thymeleaf超文本标记语言中已经提供的List传回控制器。我尝试过隐藏输入,但不幸的是,它还不起作用。 我的表单如下所示(控制器已经提供了“电影”列表) 我的控制器看起来像这样: 期待有人能帮助我!