#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
декларации.