我試圖在提交表單時將資料保存在串列中。但是在我的模型中,一個屬性 Phonenumber 來自其他模型類,因此錯誤即將到來。請檢查下面的整個代碼。
這是我的觀點
@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; }
}
}
這是提交表單時的控制器 post 方法:
[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");
}
我想在提交表單時將此資料添加到人員串列中..但我在這一行中遇到錯誤。
Contact = phone // 不能將型別 'string' 隱式轉換為 'WebApp1.Models.Contact'
這里有任何想法。
謝謝
uj5u.com熱心網友回復:
Contact = phone
您正在嘗試分配不適合的內容。錯誤已經解釋了它,但讓我們看看你是如何解決這個問題的:
public class Person
{
public string Name { get; set; }
public Contact Contact { get; set; }
}
Contact是 type Contact,我認為它是您代碼庫中的一個類。
string phone = person.Contact.PhoneNumber;
phone 是一個字串,正如您在此處明確確認的那樣。
現在,錯誤訊息應該是有意義的:
無法將型別“字串”隱式轉換為“WebApp1.Models.Contact”
換句話說:
“您不能將 a
string放入型別為Contact”的屬性中。沒有意義。我拒絕編譯這個。
注意:之所以談論隱式轉換,是因為有多種方法可以將一種型別分配給另一種型別的變數/屬性。當您將一種型別分配給另一種型別的變數/屬性時,編譯器將嘗試查看是否可以進行隱式轉換,但在您的情況下則不然。此外,在這種情況下,隱式轉換不是您需要的解決方案。
我懷疑你試圖這樣做:
Persons.Add(new Person
{
Name = name,
Contact = new Contact()
{
PhoneNumber = phone
}
});
鑒于代碼,您已經有了person,所以我不確定您為什么要嘗試重新創建Person具有相同值的新實體。你可以這樣做:
Persons.Add(person);
然后完全跳過var name和string phone宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311577.html
標籤:C# asp.net asp.net-mvc asp.net核心 asp.net-core-mvc
