我正在尋找一種方法來檢查兩個文本框的形式,以確保其中至少有一個被填充。只有當兩個文本框都爲空時,驗證纔會失敗。有沒有簡單的方法來使用Unobtrusive JScript和MVC3表單驗證來做到這一點? 感謝MVC3驗證的文本框一個或另一個需要
回答
您可以實現這樣的事情answer by Darin Dimitrov。
它說明了如何使自己的自定義驗證(客戶端和服務器端上)。它將使用MVC3驗證和JQuery不顯眼的驗證。您可以檢查是否滿足條件(選中一個或多個複選框)並基於該條件進行驗證。
的Javascript,你可以做使用jQuery
$(document).ready(function(){
var inp = $("#txt").val();
var inp2 = $("#txt2").val();
if(jQuery.trim(inp).length < 0 && jQuery.trim(inp2).length < 0)
{
//show your message.
}
})
這樣你可以看一下條件驗證解釋下面提到的文章
http://blogs.msdn.com/b/simonince/archive/2010/06/04/conditional-validation-in-mvc.aspx
你可以把[RequiredIf]屬性在兩個文本框中檢查textBox1是否爲空,則需要textbox2,反之亦然。
我添加了類,但它似乎不起作用。我想,以檢查是否文本框爲空的屬性應該simalr這樣: [RequiredIf(「姓氏」,「」,的ErrorMessage =「姓氏或名字必須包含一個值」)] 但補充說,這兩個姓氏和名字(當然帶有逆標籤)不會做任何事情 – jiggawagga
你必須缺少一些東西..下載文章底部給出的代碼並理解它是如何工作的,然後你可能會弄清楚你是什麼在應用程序中丟失。 – pramodtech
這就是我做到的。我不知道爲什麼它不起作用,但我最終使用了semaz的類似解決方案,但與我的問題完全相關。謝謝你。 – jiggawagga
試試這個。它有所有的信息。希望它能幫助:
http://derans.blogspot.com/2011/05/contact-form-revisited-with-aspnet-mvc.html
嘗試nuget包裝萬無一失驗證。它包括[Requiredif]和[Requiredifnot] http://foolproof.codeplex.com/
這裏是AtLeastOneRequired驗證的礦山版本支持DisplayAttribute:
[AttributeUsage(AttributeTargets.Property)]
public class AtLeastOneRequiredAttribute : ValidationAttribute
{
private readonly string[] _members;
public AtLeastOneRequiredAttribute(params string[] members)
{
_members = members;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (_members == null || _members.Length < 1)
return null;
var displayNames = new List<string>();
foreach (var member in _members)
{
var propertyInfo = validationContext.ObjectType.GetProperty(member);
if (propertyInfo == null)
throw new InternalErrorException("Property '{0}' cannot be found in '{1}'", member, validationContext.ObjectType);
var propertyValue = propertyInfo.GetValue(validationContext.ObjectInstance);
var stringValue = propertyValue as string;
if (stringValue != null && stringValue.Trim().Length != 0)
return ValidationResult.Success;
var displayAttribute = propertyInfo.GetCustomAttribute<DisplayAttribute>();
displayNames.Add(displayAttribute != null ? displayAttribute.Name : member);
}
return new ValidationResult(FormatErrorMessage(String.Join(", ", displayNames)));
}
}
而且非常簡單的模型:
public class FeedbackPostModel
{
[Display(Name = "Phone")]
[AtLeastOneRequired("SenderPhone", "SenderEmail", ErrorMessageResourceName = "ValidationAtLeastOnRequired", ErrorMessageResourceType = typeof(Strings))]
[StringLength(256, ErrorMessageResourceName = "ValidationFieldStringLengthMax", ErrorMessageResourceType = typeof(Strings))]
[Phone(ErrorMessageResourceName = "ValidationFieldPhoneFormat", ErrorMessageResourceType = typeof(Strings))]
public string SenderPhone { get; set; }
[Display(Name = "Email")]
[StringLength(256, ErrorMessageResourceName = "ValidationFieldStringLengthMax", ErrorMessageResourceType = typeof(Strings))]
[EmailAddress(ErrorMessageResourceName = "ValidationFieldEmailAddress", ErrorMessageResourceType = typeof(Strings))]
public string SenderEmail { get; set; }
}
- 1. 驗證文本框時,另一個文本框包含文本
- 2. 驗證其中一個或另一個
- 3. 傳遞一個JavaScript驗證動態文本框在MVC3
- 4. 只需要兩個文本框中的一個(自定義驗證程序)
- 5. 驗證第一的多個文本框
- 6. 需要運行驗證一個檢查另一on Rails的後
- 7. 驗證是否存在一個或另一個或兩個(或)
- 8. 數字驗證一個HTML文本框
- 9. 如何驗證一個WinForm文本框
- 10. jQuery驗證需要兩個字段或一個其他字段
- 11. 另一個文本框中的一個文本框的值
- 12. jQuery驗證:驗證一個字段,或者需要對兩個領域
- 13. 需要驗證文本框使用Javascript
- 14. 驗證文本框,使其值不同於另一個文本框
- 15. 我如何驗證當一個文本框的值小於另一個文本框的值?/
- 16. 需要在軌道上的另一個眼睛 - 驗證問題
- 17. 需要檢查另一個「合法」數組陣列的驗證
- 18. MVC2驗證 - 「需要一個值」
- 19. 驗證每一個文本框,爲每一個文本框爲int在C#中
- 20. jQuery驗證自定義規則:當一個複選框,點擊,一個文本框,需要
- 21. 驗證MVC3中的文本框
- 22. jQuery從一個或另一個部分驗證兩個字段
- 23. Clojure的規格:如何驗證一個或另一個地圖
- 24. NHibernate驗證器的一個值或另一個
- 25. PowerShell的:parametersets,需要一個或另一個
- 26. wpf需要將信息從一個文本框轉移到另一個文本框
- 27. 需要一個文件已經在另一個需要的文件
- 28. 驗證多個文本框
- 29. 多個文本框驗證
- 30. 表單驗證 - 組中至少需要一個複選框
這很好,謝謝! – jiggawagga