ViewModel在httpget上有效-当表单发回时无效-我可以发回不同的模型吗?
本文关键字:我可以 模型 无效 httpget 有效 表单 ViewModel | 更新日期: 2023-09-27 18:12:21
我有一个ViewModel充满了一个地方对象和一些其他数据的控制器。
在绑定到这个ViewModel的视图中,用户从下拉列表中选择一个项目并按下提交——这被一个带有[httppost]的action方法捕获。
在这个阶段,我感兴趣的是用户在下拉列表中选择的值-而不是ViewModel中的任何值-其唯一目的是填充页面(除了单个dropdownlist值)。
然而,由于位置对象没有按照设计填充表单字段(我不需要返回这些值-甚至不需要显示其中的大部分)-返回的模型现在无效-由于某些字段是[Required]并引发错误。
当[httpget]创建页面时,我想绑定一个复杂的ViewModel到视图。然后,当用户选择一个值并按下submit(我不再需要那个ViewModel)或验证它时。
本质上我想在[httppost]中得到一个不同的模型,我在[httpget]中使用。
这是可能的或可取的-或者它打破了模型绑定应该如何工作?当未绑定的模型项返回空时,是否需要制作一个没有验证的特定ViewModel来避免错误?
(我在谷歌上找不到关于这一点的任何指导)。
我想绑定一个复杂的ViewModel到视图,当[httpget]创建页面。然后,当用户选择一个值并按提交——我不再需要那个ViewModel——或者验证它
如果您使用视图模型仅在视图中显示某些内容。为什么会有Required标签。您应该创建并使用一个简单的视图模型,该模型具有视图所需的属性。只在需要验证的属性中使用[Required]属性。
public class SimplyInfoVm
{
public string Name { set;get;} // to Display some name
[Required]
public int SelectedStateId { set;get;}
public List<SelectListItem> States { set;get;}
}
现在在您的GET和and视图中使用这个。您也可以对HttpPost操作参数使用相同的视图模型。当表单提交时,模型验证器将只验证SelectedStateId
简而言之,您的视图模型应该特定于您的视图。根据视图需要创建视图模型