如果使用ajax请求数据,则在asp.net表单中提交时模型为null

Model null on submit in asp mvc.net form if using ajax to request data

本文关键字:提交 表单 模型 null net asp ajax 请求 数据 则在 如果      更新时间:2023-09-26

我想知道如何正确操作或规避我遇到的问题。

我有一个ASP MVC。. NET 5页面和模型。在[HttpGet]Index()中,我准备模型并将其传递给视图。该视图包含@Html。编辑器和@Html。用于模型属性的输入字段。最后是一个单一的提交按钮,用于将表单发送/POST到控制器及其[httppost]Index(MyModel模型)控制器方法,该方法接受模型作为输入参数。一切都很好。

现在我想动态地改变下拉菜单的内容,当用户选择最上面的下拉菜单,选择一个条目,那么其他下拉菜单也会改变。

我发现这样做的方式是使用javascript和。onchange(function(){.$.ajax(postdata)})来生成post请求,该请求被发送到控制器方法,控制器生成json-reply与新的字符串列表,然后这些字符串被放入其他下拉列表。这很好。我可以单击下拉菜单,选择值,其他下拉菜单可以动态更改内容,等等。一切都很好。

视图包含一些其他字段,用于用户名,或电话号码字段,等等。

当用户填写数据,选择下拉菜单,最后提交控制器方法接收到的表单和空/null模型!为什么控制器接收一个空模型?

我想我找到答案了。只有表单中的第一个POST获得了所有可用的信息,后面的POST不再拥有所有可用的信息。

浏览器接收页面,页面内部是表单标记。在这个表单主体中,一个元素被点击/更改——下拉菜单——并使用javascript生成一个post请求到服务器。一旦这个POST完成-小回复用于更新表单主体内的其他下拉菜单-浏览器"内存"中的所有进一步的"数据"似乎都丢失了。当用户单击最后一个提交按钮并向服务器生成POST时,浏览器发送..什么都没有。因此,传递给控制器的模型为空。

所以:我如何使用javascript/ajax/jquery动态更新控件与位信息从控制器,而在一个ASP MVC。. NET 5表单,而不使用POST请求,这似乎打破了表单处理?

或者:我如何将我的模型数据发送到最后的提交按钮到控制器,使用javascript/ajax/jquery,并接收一个新的视图作为回复?

问题是我命名了模型' model '的属性,这破坏了处理。一旦我重命名它的页面最终提交开始工作。有时候事情就是这么简单,但一开始却带来了看不见的后果。