用于处理多个局部视图的 ASP.NET MVC 项目的理想模型结构

Ideal model structure for an ASP.NET MVC project for handeling multiple partial views

我有两个局部视图,分别命名为 _centerDetails.cshtml_centerRights.cshtml .

我在单击提交时从 centerdetails 传递数据,并希望在切换另一个局部视图时显示此数据,但不将其发布到服务器。

This is my model class which I have created to handling my data via controller:

namespace ADWP_AdminWebPortal.Models
{

    public class CountryList
    {
        [Required(ErrorMessage = "Select a Country.")]
        public int CountryId { get; set; }
        [Required]
        public string Country { get; set; }

        [Required(ErrorMessage = "Select a State.")]
        public int StateId { get; set; }
        [Required]
        public string State { get; set; }

        [Required(ErrorMessage = "Select a City.")]
        public int CityId { get; set; }
        [Required]
        public string City { get; set; }
    }

    public class CustomerDetails: CountryList
    {
        public int ClientId { get; set; }

        [Required (ErrorMessage="Eneter the First name")]
        [DataType(DataType.Text)]
        public string FirstName { get; set; }

        [Required(ErrorMessage = "Eneter the Middle name")]
        [DataType(DataType.Text)]
        public string MiddleName { get; set;}
        public string NatureOfOccupation { get; set; }

        public string AgentId { get; set; }

        [Required(ErrorMessage ="Select a Client Type.")]
        public string ClientType { get; set; }

        public int TariffId { get; set; }
        public string TariffName { get; set; }
        public int ServiceId { get; set; }
        public string ServiceName { get; set; }
        public string OrderId { get; set; }
        public int PaymentMethodId { get; set; }
        public string PaymentMethodName { get; set; }
    }
}

在这里你可以看到我制造的混乱。我的问题是当您在同一控制器中使用多个模型时如何处理多个模型?

这里我没有一次性创建所有数据 class 因为我希望它可以根据我的需要重复使用。

How can I handling data in a model? This is the main problem that is coming to me while I am creating the partial views in my project.

您可以同时使用 CTE 和 ROW_NUMBER 函数来删除 table 中的重复行。

With CTE AS (
    SELECT VERIFICATIONTYPE,
            NAME,
            COST,
            RN = ROW_NUMBER() OVER (PARTITION BY VERIFICATIONTYPE, NAME, COST ORDER BY VERFICATIONTYPE)
    FROM DETAILS)
DELETE FROM CTE WHERE RN > 1
END

经过一番努力,我得到了结果。

 public class CountryList
    {
        [Required(ErrorMessage = "Select a Country.")]
        public int CountryId { get; set; }
        [Required]
        public string Country { get; set; }
    }

    // Added Class

public class State
{
      [Required(ErrorMessage = "Select a State.")]
        public int StateId { get; set; }
        [Required]
        public string State { get; set; }
}
    // Added Class
public class City
{
      [Required(ErrorMessage = "Select a City.")]
        public int CityId { get; set; }
        [Required]
        public string City { get; set; }
}

    public class CustomerDetails
    {
        public int ClientId { get; set; }

        [Required (ErrorMessage="Enter the first name")]
        [DataType(DataType.Text)]
        public string FirstName { get; set; }

        [Required(ErrorMessage = "Enter the middle name")]
        [DataType(DataType.Text)]
        public string MiddleName { get; set; }


        public int TariffId { get; set; }
        public string TariffName { get; set; }
        public int ServiceId { get; set; }
        public string ServiceName { get; set; }
        public string OrderId { get; set; }
        public int PaymentMethodId { get; set; }
        public string PaymentMethodName { get; set; }
        public List<CountryList> { get; set; } //added list
        public List<State> { get; set; } //added list
        public List<City> { get; set; } //added list

        }

是啊,太简单了。