我想知道如何正确行事或避免我遇到的问题。
我有一个带有模型的ASP MVC.NET 5页面。在[HttpGet]索引()上,我准备模型并将其传递给视图。该视图包含模型属性的@ Html.EditorFor和@ Html.DropdownFor输入字段。最后是一个单一的提交按钮,用于将表单发送/ POST到控制器及其[httppost]索引(MyModel模型)控制器方法,该方法接受模型作为输入参数。所有的花花公子,一切都很好。
现在我想在用户选择最上面的下拉列表时动态更改下拉列表的内容,选择一个条目,然后其他下拉列表也会改变。
我发现这样做的方法是使用javascript和.onchange(function(){。$。ajax(postdata)})生成POST请求,此请求被发送到控制器方法,控制器生成带有新字符串列表的json-reply,然后将这些字符串放入其他下拉列表中。这很好用。我可以单击下拉列表,选择值和其他下拉动态动态更改内容,等等。所有的花花公子,一切都很好。
该视图包含一些其他字段,用户名或电话号码字段等。
当用户填写数据时,选择下拉列表,最后提交控制器方法接收的表单并清空/ null模型!为什么控制器接收空模型?
我想我找到了答案。只有FORM中的第一个POST赢得所有可用的信息,之后POSTS不再拥有所有这些信息。
浏览器接收页面,页面内部是表单标签。在这个表单体中,单击/更改元素 - 下拉列表 - 并使用javascript生成对服务器的POST请求。一旦完成这个POST - 小回复用于更新表单体内的其他下拉菜单 - 浏览器“内存”中的所有其他“数据”似乎都会丢失。当用户单击最后一个提交按钮并向服务器生成POST时,浏览器将发送..什么都没有。因此,传递给控制器的模型为空。
那么:如何在ASP MVC.NET 5表单中使用javascript / ajax / jquery来动态控制来自控制器的信息,而不使用似乎打破表单处理的POST请求?
或者:如何使用javascript / ajax / jquery将最终提交按钮上的模型数据发送到控制器,并接收新的视图作为回复?
答案 0 :(得分:0)
问题是我命名了模型'Model'的属性并且破坏了处理。一旦我重命名它,页面最终提交就开始起作用了。有时事情就像那样简单,但却产生了看不见的后果 - 起初。