Как обновить свойство реферата с наследованием / использованием подкласса в MVC - PullRequest
0 голосов
/ 12 октября 2011

У меня есть абстрактный класс

public abstract class Member
{
   public string ID { get; set; }
   public string Username { get; set; }
   public int  MemberType { get; set; } 
   public abstract string MemberName { get; set; }
   public int Status  { get; set; }
}

public class Person : Member
{
   public string LastName { get; set; }
   public string FirstName{ get; set; }
}

public class Business : Member
{
   public string BusinessName { get; set; }
   public string TaxNo { get; set; }
}

Класс был сопоставлен с использованием плавного API,

Теперь есть способ обновить свойство «Status» из представления (имеющего Memberмодель) без использования или перехода к подклассу (Person / Business)?

Я только что попробовал, но при отправке страницы написано "Невозможно создать абстрактный класс."

Илиесть правильный способ сделать это?

Спасибо

Ответы [ 3 ]

0 голосов
/ 13 октября 2011

Не в EF.Вы должны создать экземпляр объекта для работы с EF, и вы не можете создать экземпляр абстрактного класса.

Вы можете сделать класс не абстрактным.Или вы можете использовать хранимый процесс для обновления поля, или некоторые прямые sql.

0 голосов
/ 13 октября 2011

Это похоже на проблему, подобную той, на которую я отвечал ранее:

ASP.NET MVC 3: DefaultModelBinder с наследованием / полиморфизмом

0 голосов
/ 13 октября 2011

Похоже, ваша проблема в том, что ваш метод действия имеет абстрактный тип в качестве параметра, с которым связыватель модели по умолчанию ничего не может сделать. Если вы не можете использовать одно и то же представление для двух разных классов, вам может потребоваться реализовать собственную привязку модели для проверки во входящем запросе и решить, какой тип, Person или Business, создать экземпляр.

Перейдите по этой ссылке для получения дополнительной информации о создании привязки пользовательской модели:

http://odetocode.com/blogs/scott/archive/2009/05/05/iterating-on-an-asp-net-mvc-model-binder.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...