我試圖讓我MVC3應用程序來顯示RequiredIfs的驗證消息,利用這裏的屬性: http://blogs.msdn.com/b/simonince/archive/2011/02/04/conditional-validation-in-asp-net-mvc-3.aspx 現在,如果沒有孩子的實體,但我有一個用戶工作正常,並且用戶地址對象需要驗證。實際上,即使只有一個地址可以工作,但有3個地址,每個地址都有一個複選框,用於指示它是否處於活動狀態。RequiredIf驗證與子實體
我試圖改變validator.unobtrustive.js的jQuery的如下得到驗證上正確的值(地址爲「地址_」或「BillingAddress_」:當所有可能
$.each(this.params, function() {
var address = element.name.split('.')[0] + '_';
paramValues[this] = this.toString() == 'dependentproperty' ? address + $element.attr(prefix + this) : $element.attr(prefix + this);
});
這隻能。一個RequiredIf取決於被選中的複選框下驗證所有addesses並給出輸出視圖上的消息:
$.each(this.params, function() {
paramValues[this] = this.toString() == 'dependentproperty' ? 'Address_' + $element.attr(prefix + this) : $element.attr(prefix + this);
});
任何幫助或想法,爲什麼它是表現這種方式,歡迎=)其他approches解決問題我會開心你接受。謝謝你的幫助。
編輯
我意識到JavaScript的東西不反正工作,我現在已經接到從模型正確的ID。但我仍然有錯誤,它只驗證所有複選框被選中。任何想法,爲什麼這是?
一個地址構建模型如下:
[RequiredIf("IsActive", true)]
[Display(Name = UserManagementResources.sdAddressText, ResourceType = typeof(UserManagementResources))]
public string Street
{
get { return _address["sdAddress"]; }
set { _address["sdAddress"] = value; }
}
[RequiredIf("IsActive", true)]
[Display(Name = UserManagementResources.sdCityText, ResourceType = typeof(UserManagementResources))]
public string City
{
get { return _address["sdCity"]; }
set { _address["sdCity"] = value; }
}
視圖模型包含了不同的地址。
public Address Address
{
get { return _address ?? (_address = new Address(Customer.Name, _domain, "Address") { IsActive = true }); }
}
public Address BillingAddress
{
get { return _billingAddress ?? (_billingAddress = new Address(Customer.Name, _domain, "BillingAddress")); }
}
控制器只是創建一個新的空模型。該視圖使用Html.EditorFor()顯示不同的地址。
您可以發佈您(或簡化)的模型和控制器?我猜測驗證正在阻止創建子對象並因此進行有條件驗證,但我們正在工作中有點盲目。 – Milimetric 2011-05-19 13:37:59
我發佈了模型的主要部分作爲編輯。控制器真的不會做任何事情,除了通過ViewModel ... – Nischo 2011-05-19 13:52:51