ユーザーからさまざまなタイプのさまざまな電話番号のリストを取得したい「ContactInfo」ビューがあります。ユーザーは、番号を追加、編集、および削除し、そのタイプを指定できる必要があります。少なくとも 1 つの携帯電話番号が必要です。
私はさまざまなアプローチを試みましたが、ある時点で行き止まりになりました。特定のバグを尋ねるよりも、シナリオ全体を説明して解決策を尋ねる方が効率的だと思いました。あなたの答えに感謝します。
これが私の電話クラスです:
public partial class Phone
{
public int Id { get; set; }
public int UserId { get; set; }
public string Number { get; set; }
public PhoneNumberType Type { get; set; }
public virtual User User { get; set; }
}
電話タイプの列挙型は次のとおりです。
public enum PhoneNumberType
{
None,
Mobile,
Home,
Work
}
これはビューのモデルです (タイプ コンボボックスを埋めるために、列挙型から電話タイプを入力するリストも含めました)。
public class ContactInfoModel
{
public int Id { get; set; }
public string EmailAddress { get; set; }
public string Country { get; set; }
public string Province { get; set; }
public string County { get; set; }
public string City { get; set; }
public string Address { get; set; }
public ICollection<Phone> Phones { get; set; }
private IEnumerable<EnumMember> _phoneTypes;
public IEnumerable<EnumMember> PhoneTypes
{
get
{
if (this._phoneTypes == null)
{
_phoneTypes = EnumUtility.GetEnumMembers(typeof(PhoneNumberType));
}
return _phoneTypes;
}
}
}
そして最後に、これはビューです:
@model Jobeteria.Models.JobSeekers.ContactInfoModel
@{ViewBag.Title = "Contact Information";}
@using (Html.BeginForm()){
@Html.AntiForgeryToken()
<header class="pages-header">
<div class="pages-header-bg text-background"></div>
<hgroup>
<h1>@ViewBag.Title</h1>
</hgroup>
</header>
<div class="pages-wide-column">
<div class="pages-body-bg text-background"></div>
<div class="pages-content-marginer">
<fieldset>
<legend>Contact Information</legend>
<ol>
<li>
@*view to manipulate phone numbers*@
</li>
<li>
@Html.LabelFor(model => model.EmailAddress)
@Html.EditorFor(model => model.EmailAddress)
<br/>
@Html.ValidationMessageFor(model => model.EmailAddress)
</li>
<li>
@Html.LabelFor(model => model.Country)
@Html.EditorFor(model => model.Country)
<br/>
@Html.ValidationMessageFor(model => model.Country)
</li>
<li>
@Html.LabelFor(model => model.Province)
@Html.EditorFor(model => model.Province)
<br/>
@Html.ValidationMessageFor(model => model.Province)
</li>
<li>
@Html.LabelFor(model => model.County)
@Html.EditorFor(model => model.County)
<br/>
@Html.ValidationMessageFor(model => model.County)
</li>
<li>
@Html.LabelFor(model => model.City)
@Html.EditorFor(model => model.City)
<br/>
@Html.ValidationMessageFor(model => model.City)
</li>
<li>
@Html.LabelFor(model => model.Address)
@Html.TextAreaFor(model => model.Address)
<br/>
@Html.ValidationMessageFor(model => model.Address)
</li>
<li class="horizontal-field">
<input type="submit" value="SAVE" />
<input type="reset" value="Cancel" onclick="javascript: history.back(1);"/>
</li>
</ol>
</fieldset>
</div>
</div>}