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