Свойство доступа одного класса к другому

#c# #asp.net #asp.net-mvc #asp.net-core #asp.net-core-mvc

Вопрос:

Я пытаюсь сохранить данные в списке при отправке формы. Но в моей модели один телефонный номер свойства исходит из другого класса модели, и из-за этого возникает ошибка. Пожалуйста, проверьте ниже весь код.

Вот мое мнение

 @using (Html.BeginForm("Index", "Person"))
{
    <div>
        User : <input type="text" name="Name"/>
    </div>
    <div>
        Contact : <input type="text" name="Contact.PhoneNumber"/>
    </div>
    <div>
        <input type="submit" value="save"/>
    </div>
}
 

Вот класс модели :

 namespace WebApplication1.Models
{
    public class Person
    {
        public string Name { get; set; }
        public Contact Contact { get; set; }
    }
}
 

Вот метод отправки сообщения контроллера при отправке формы:

 [HttpPost]
        public IActionResult Index(Person person)
        {
public static List<Person> Persons = new List<Person>();

            var name = person.Name;
            string phone = person.Contact.PhoneNumber;

            Persons.Add(new Person
            {
                Name = name,
                Contact = phone // here error is coming like cannot implicitly convert type 'string' to 'WebApp1.Models.Contact'
            });

            return View("List");
        }
 

Я хочу добавить эти данные в список лиц при отправке формы..но я получаю ошибку в этой строке.

Контакт = телефон // не может неявно преобразовать тип ‘строка’ в ‘WebApp1.Models.Свяжитесь с нами’

Здесь есть какие-нибудь идеи.

Спасибо

Ответ №1:

 Contact = phone
 

Вы пытаетесь назначить что-то, что вам не подходит. Ошибка уже объясняет это, но давайте посмотрим, как вы могли это понять:

 public class Person
{
    public string Name { get; set; }
    public Contact Contact { get; set; }
}
 

Contact имеет тип Contact , который, я полагаю, является классом в вашей кодовой базе.

 string phone = person.Contact.PhoneNumber;
 

phone это строка, как вы явно подтвердили здесь.

Теперь сообщение об ошибке должно иметь смысл:

не удается неявно преобразовать тип «строка» в «WebApp1.Models».Свяжитесь с нами’

Другими словами:

«Вы не можете поместить a string в свойство типа Contact «. Это не имеет смысла. Я отказываюсь компилировать это.

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


Я подозреваю, что вы пытались это сделать:

 Persons.Add(new Person
{
    Name = name,
    Contact = new Contact()
    {
        PhoneNumber = phone
    }
});
 

Учитывая код, у вас уже был a person , поэтому я не уверен, почему вы пытаетесь воссоздать новый Person экземпляр с теми же значениями. Ты мог бы просто сделать:

 Persons.Add(person);
 

а затем полностью пропустил var name и string phone декларации.