0
我有這種模式,有一個字典的聯絡信息:模型綁定字典罰款的出路,但沒有在途中?
public class UserInfo
{
public int UserId { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
public Dictionary<ContactType, AccountContactInfo> ContactInfo { get; set; }
public UserInfo()
{
ContactInfo = new Dictionary<ContactType, AccountContactInfo>();
}
}
ContactType是enuerations如航運,計費等枚舉AccountContactInfo是簡單的一個視圖模型。純字符串屬性,沒有別的。
以下是讀取模型的示例部分視圖。這的UserInfo對象是主力機型裏面:
<div id="shipping-address" class="confirm-addresses">
<h3>Shipping Address</h3>
@Html.LabelFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Street)
@Html.TextBoxFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Street)
@Html.LabelFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].City)
@Html.TextBoxFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].City)
@Html.LabelFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].State)
@Html.TextBoxFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].State, new { maxlength = 2})
@Html.LabelFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Zip)
@Html.TextBoxFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Zip, new { maxlength = 5})
@Html.LabelFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Phone1)
@Html.TextBoxFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Phone1, new { maxlength = 10})
@Html.LabelFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Phone2)
@Html.TextBoxFor(m => m.UserInfo.ContactInfo[ContactType.Shipping].Phone2, new { maxlength = 10})
</div>
如果完全建立模型的頁面,它會顯示完全正常。然而,當我發回給控制器,它崩潰以下情況例外:
異常詳細信息:System.InvalidCastException:指定強制轉換 有效。
它似乎與字典有關,因爲這是我添加字典的最近更改,我確定就是這樣。這裏是堆棧跟蹤,如果有幫助的話:http://pastebin.com/8vyPWiFn
我在控制器動作中設置了斷點,但調試器永遠不會到達這一點,所以我假設它在反序列化過程中的某個時刻斷了?我不明白爲什麼這種方式在頁面的出路上工作,但不在回到控制器的路上。我發送的信息與發送的信息相同。
你的ACtion方法是什麼樣的? – Nilesh
它現在不會做任何事情,但簽名只需要一個參數,它是上述的父模型。 – Sinaesthetic