我有两个问题需要在mvc项目中管理模型的最佳方法。ASP.NET MVC中的模型最佳实践
- 我可以使用一个构造函数初始化我的模型(显然与其相关的逻辑)?
- 为此,最好使用“构造函数的方式”,或者我应该在创建新模型实例后使用由控制器调用的扩展方法?
例如我有一个联系表单的模型。用户可以有三个角色:匿名,客户或供应商,他可以在每个州提交表格。我唯一想要的是,如果用户登录(如客户的角色或供应商的角色),我想要在他的数据文本框中预先加载。 为了做到这一点,我写了这个代码:
using System;
using System.Web;
using System.Web.Security;
using DrOkR2.Bll.Managers;
namespace DrOkR2.WebFront.Models
{
public class RequestModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
public string Prov { get; set; }
public string Request { get; set; }
public bool UsageConditions { get; set; }
public RequestModel()
{
if (!HttpContext.Current.User.Identity.IsAuthenticated) return;
if (HttpContext.Current.User.IsInRole("Client"))
{
var guid = (Guid)Membership.GetUser().ProviderUserKey;
var manager = new ClientManager();
var client = manager.GetClient(guid);
client.Email = Membership.GetUser().Email;
FirstName = client.FirstName;
LastName = client.LastName;
Email = client.Email;
Phone = client.Phone;
Prov = client.Prov;
}
else if (HttpContext.Current.User.IsInRole("Supplier"))
{
var guid = (Guid)Membership.GetUser().ProviderUserKey;
var manager = new SupplierManager();
var supplier = manager.GetSupplier(guid);
supplier.Email = Membership.GetUser().Email;
FirstName = supplier.FirstName;
LastName = supplier.LastName;
Email = supplier.Email;
Phone = supplier.PrimaryPhone;
Prov = supplier.BusinessProv;
}
}
}
}
它完美,但我的问题是:我使用的最好的方法是什么?
对我来说这是有道理的,因为你不会建立对象无效。 –
我不能有无效的对象。我能做的最糟糕的事情是用户使用空的联系表单登录。问题是:“用户登录逻辑放在这里,或者我应该采用扩展方法?” – G10
@ThiagoCustodio用'HttpContext'耦合你的视图模型对你有意义吗? – James