要在MVC视图中维护许多字段
本文关键字:许多 字段 维护 MVC 视图 要在 | 更新日期: 2023-09-27 18:09:19
我正试图找出一个更好的方法或模式来获得许多用户的选择和输入从一个页面使用ASP。净MVC。
问题 : 我在一个页面上有许多输入字段,我需要将它们的值存储在数据库中。
这是我的尝试:我有一个单页的部分视图。对于局部视图,我可以稍微分解它。
为了便于论证,我在一个页面上有50个字段。其中一些是下拉列表,一些是文本输入字段,还有一些是复选框。每个值作为一行存储在数据库中,并通过唯一的业务键进行访问。
例如,在代码中,当使用实体框架访问我的数据访问实体时://Grouping of settings for a particular user
var allSettingsForThisUser = myDbContext.USER_SETTINGS_MODEL.Where(u => u.USER_ID == userId);
//Unique settings for a user
var setting1 = allSettingsForThisUser.USER_SETTINGS_MODEL.Where(x => x.BUSINESS_KEY.Equals("FIELD1")).First();
var setting2 = allSettingsForThisUser.USER_SETTINGS_MODEL.Where(x => x.BUSINESS_KEY.Equals("FIELD2")).First();
var setting3 = allSettingsForThisUser.USER_SETTINGS_MODEL.Where(x => x.BUSINESS_KEY.Equals("FIELD3")).First();
.
我已经设置了一个视图模型,将屏幕上的每个设置保存在其特定位置。
我的视图模型是这样的:
public class MyViewModel
{
//Strongly typed fields for my view
public USER_SETTINGS_MODEL OrganizationType { get; set; }
public USER_SETTINGS_MODEL BookletsRequired { get; set; }
public USER_SETTINGS_MODEL HasGreenPants { get; set; }
public USER_SETTINGS_MODEL MiddleName { get; set; }
...
}
我这样做事似乎效率不高。因此,对于每个字段,我需要通过特定的业务键查询数据库。然后,我需要将其分配给特定的USER_SETTINGS_MODEL强类型字段。
我已经尝试使用一个视图模型与实体的集合。在我看来,我然后在WHERE条件下使用Linq查询传递业务键。结果是一个非常复杂的视图。
我的问题是,有没有更好的方法?更好的模式?
概要:-许多字段捕获和保存-字段放置在屏幕上的特定位置-一些字段是输入框,一些下拉列表,一些复选框-我使用ASP。. NET MVC5、实体框架、Linq和数据访问的存储库模式
谢谢
看起来有必要进行规范化。您的视图模型是一团糟,因为数据是一团糟。尝试在某些特殊情况下表示USER_SETTINGS的组/类别/类型,并在此基础上创建模型:"RegionalSettingsModel/ChargingOptionsModel"等
您还可以创建用于读取/更新每个模型的部分视图,如果需要,可以将它们全部放在一个视图中。
数据库中的表可以由多个模型表示。
另外,对于缺少列的情况,您可以创建存储过程,其中包含针对特定设置组所需的查询…示例
我想你有:
表设置: USERID - SETTING - VALUE
1 - LANG - ENG
1 - CURR - DOLLAR
为了有一个实体,你可以创建:
存储过程: GetRegionalSettingsByUserID(Id) as
Select LANG, Curr from
(select Value from SETTINGS where USERID=Id and Setting="LANG"
UNION
select Value from SETTINGS where USERID=Id and Setting="CURR"
)