我正在開發一個Sitecore/MVC應用程序,我的第一個MVC應用程序,所以我正在學習。毫無疑問,我在某個地方出現了問題。對子視圖的MVC驗證
我有一個籃子,它有2個地址的意見,其中一個用於計費和另一個交付。還有一個複選框用於「交付與交費相同」,允許用戶只填寫一個地址。當用戶選中此複選框時,投遞地址div會崩潰。
主要觀點:
<div class="pure-control-group">
<h2>Billing Address</h2>
@Html.Action("Init", "Address", new {AddressType = "Billing", @Address = Model.Billing})
</div>
<!-- Delivery Address-->
<div class="pure-control-group">
<h2>Delivery Address</h2>
<label for="UseBillingForShipping" class="pure-checkbox">
@Html.CheckBoxFor(x => x.UseBillingForShipping)
Same as Billing Address above
</label>
</div>
<div class="manual-address-entry focus-pane">
@Html.Action("Init", "Address", new {AddressType = "Delivery", @Address = Model.Delivery})
</div>
地址視圖的例子:當我試圖驗證發生
<div class="pure-u-1 pure-u-sm-1-2 pure-u-lg-2-5">
<label for="@(Model.AddressType).FirstName">First Name<span class="required">*</span></label>
<input type="text" id="@(Model.AddressType).FirstName" name="@(Model.AddressType).FirstName">
@Html.ValidationMessageFor(x=>x.FirstName) //<= How to handle this?
</div>
<div class="pure-u-1 pure-u-sm-1-2 pure-u-lg-2-5">
<label for="@(Model.AddressType).LastName">Last Name<span class="required">*</span></label>
<input type="text" id="@(Model.AddressType).LastName" name="@(Model.AddressType).LastName">
@Html.ValidationMessageFor(x=>x.LastName) //<= How to handle this?
</div>
我的問題。
[Required(ErrorMessage = "First Name is required")]
public string FirstName { get; set; }
[Required(ErrorMessage = "Last Name is required")]
public string LastName { get; set; }
所以我有2個:在地址視圖控件的ID,以便於他們提供像id="Billing.LastName"
在地址模式的字段將帳單地址,例如的情況下被命名爲id="@(Model.AddressType).LastName"
問題:
- 如何創建
@Html.ValidationMessageFor
標記。我試過@Html.ValidationMessageFor(x=>x.FirstName)
和類似的labelfor
(<label for="@(Model.AddressType).LastName">
),@Html.ValidationMessageFor(@(Model.AddressType).LastName)
,都沒有工作。我開始認爲我完全錯誤地認識到了這一點。 - 第二個是如果用戶選擇相同地址的複選框,我將如何去關閉僅對第二個地址的驗證。
這現在有道理。我之前看過這個,但對我來說沒有意義。它似乎被用於不同的事情。感謝您的解釋,我現在將其轉換爲編輯器模板。 – Fred
完美!謝謝 – Fred