在ASP.MVC视图模型中分离GET和POST字段

本文关键字:GET POST 字段 分离 ASP MVC 视图 模型 | 更新日期: 2023-09-27 18:30:11

让我们假设我们有一个包含单个下拉列表的视图模型。视图模型应该有两个字段:

  • 下拉列表的列表
  • 所选项目

区分它们是否合理,例如将它们分组如下:

public class ExampleVM
{
    #region GET
    public List<SelectListItem> Items { get; set; }
    #endregion
    #region POST
    public int? SelectedItem { get; set; }
    #endregion
}

或者可能还有另一种方法来区分这些字段?

在ASP.MVC视图模型中分离GET和POST字段

理论上,这些是独立的模型。一种用于视图渲染(称为视图模型),另一种用于输入处理(称为输入模型

考虑单个文本框表单的情况。视图模型是一个字符串,表示文本框的当前值。输入模型是一个名称相同的字符串,表示用户的输入(如果有的话)。因此,在建模时,可以创建两个具有单个字符串属性的类,也可以同时使用一个类。

您的下拉列表的情况似乎不同,因为您需要两个属性,一个用于呈现列表,另一个用于发布的选定项目。但事实似乎并非如此。一旦您不仅需要用户输入新值,还需要更新现有值,您就会发现您也会使用selected value属性进行查看(代码中的GET部分)。所以再次使用。

有关ASP.NET MVC模型的更深入的解释,请查看Dino Esposito的这篇文章。

一句话:是的,你的区别是合理的,但有些人可能会认为这不切实际或过分。