Here is a ViewModel I have created for UpdatingApplication
using System.Threading.Tasks;
namespace MEMineralResources.Common.Models.Application
{
public class EditApplicationModel
{
public int DevisionId { get; set; }
public int ApplicationId { get; set; }
Required(ErrorMessageResourceType = typeof(MEMineralResources.Resources.Resources),
ErrorMessageResourceName = "ErrorMessageObligatory")]
public List<ResourceMineral> ListResourceMinerals { get; set; }
[Required(ErrorMessageResourceType = typeof(MEMineralResources.Resources.Resources),
ErrorMessageResourceName = "ErrorMessageObligatory")]
[Display(Name = "MainUser", ResourceType = typeof(Resources.Resources))]
public int MainUserId { get; set; }
[Required(ErrorMessageResourceType = typeof(MEMineralResources.Resources.Resources),
ErrorMessageResourceName = "ErrorMessageObligatory")]
[Display(Name = "HelperUser", ResourceType = typeof(Resources.Resources))]
public int HelperUserId { get; set; }
[Required(ErrorMessageResourceType = typeof(MEMineralResources.Resources.Resources),
ErrorMessageResourceName = "ErrorMessageObligatory")]
[Display(Name = "HelperUser", ResourceType = typeof(Resources.Resources))]
public int HelperUser2Id { get; set; }
[Required(ErrorMessageResourceType = typeof(MEMineralResources.Resources.Resources),
ErrorMessageResourceName = "ErrorMessageObligatory")]
[Display(Name = "PloshtNahodishte")]
public decimal AreaSize { get; set; }
[Required(ErrorMessageResourceType = typeof(MEMineralResources.Resources.Resources),
ErrorMessageResourceName = "ErrorMessageObligatory")]
public string SelectedAreaTypeID { get; set; }
//a lot other properties which are common for all divisionIDsa
}
}
SO So I've got a links like his - Application/UpdateApplciation/?divisionID=2
So depending on this property ehich you see also in teh model - divisionId I should return a view from this viewmodel but slightly different depending on the divisionID
Some of the differences are
when divisionID=2 or 3 - ListResourceMineral - is not obligatory and AreaSize - is not required and I will hide it in the model (it doesn't exist)
When divisionID=5 - HelperUser and HelperUser2Id are not required also a problem is that Displplay Property is with different value - strange but true.
/ SO I think about Creating Custom Attribute that will be something similar RequireIf(DivisionID=5,6,7)
or the other way is in the code of the when DivisionID = 2 or 3 to remocve the error from the model state
this.ModelState.Remove("AreaSize");
Can you suggest cleaner or better approaches to this problem. Best Regards