我有一個基本模型類NotificationBase和兩個派生模型GeneralNotification和ReleaseNotification。使用派生的mvc模型的單個視圖
public class NotificationBase
{
public int Id { get; set; }
[Required]
[StringLength(50, ErrorMessage="Title must not exceed 50 characters.")]
public string Title { get; set; }
[Required(ErrorMessage="Type is required.")]
public int TypeId { get; set; }
[Required(ErrorMessage="Importance is required.")]
public int ImportanceId { get; set; }
public DateTime Created {get; set; }
[Required(ErrorMessage="Start date is required.")]
public DateTime StartDate { get; set; }
[Required(ErrorMessage="End date is required")]
public DateTime EndDate { get; set; }
[AllowHtml]
[Required(ErrorMessage="Details are required")]
public string Details { get; set; }
}
public class GeneralNotification : NotificationBase
{
[Required(ErrorMessage="Message is required.")]
[StringLength(50, ErrorMessage = "Message must be maximum 50 chararacters long.")]
public string Message { get; set; }
}
public class ReleaseNotification : NotificationBase
{
[Required(ErrorMessage="Version is required.")]
public string Version { get; set; }
}
我試圖使用單個編輯視圖來編輯派生的通知類型。
此視圖有一個NotificationBase類型的模型。
問題是我無法獲得要在編輯視圖中顯示的派生類型的添加屬性。發送基類型的模型意味着我沿途失去了派生類型的額外屬性。
是否有解決方法,或者我只需爲每個派生模型分別創建視圖?
謝謝你的快速回應,Andrei。這正是我正在做的,問題是這是一個編輯視圖,我需要顯示選定的實體屬性。對於GeneralNotification模型,我需要顯示Message屬性的值。這是我無法傳遞給我的觀點的價值。 –
@OctavianEpure,你如何將模型傳遞給視圖?你能分享一個這樣的代碼示例嗎?理論上,在上面的答案中運行'return View(generalNotificationInstance)'和片段應該會給你一個預期的結果。 – Andrei
這是我傳遞給視圖@model NotificationBase的模型,並在控制器中執行此操作NotificationBase model = null; switch(typeId) case(int)NotificationType.General: model = Service。GetGeneralNotification(ID); 休息; case(int)NotificationType.Release: model = Service.GetReleaseNotification(id); 休息; } return View(model); –