Visual Studio 2012 kullanıyorum ve çalışmak için bir özel özellik istemcisi yan mantığı alamıyorum, daha küçük bir ölçekte yeniden oluşturmak için yeni bir MVC 4 projesi oluşturdum.ASP.NET MVC 4 - İstemciler Tarafından Doğrulama Çalışmıyor
public class MyModel
{
public int Id { get; set; }
[Required]
public string LastName { get; set; }
[NeverValid(ErrorMessage="Serverside Will Never Validate")]
public string FirstName { get; set; }
}
public class NeverValidAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
return false;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
return new ValidationResult(this.ErrorMessage, new[] { validationContext.MemberName });
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationRule
{
ErrorMessage = this.ErrorMessage,
ValidationType = "nevervalid"
};
}
}
doğrulamak asla modeli ve Özellik sonra nevervalid.js
denilen bir javascript dosyası da bulunmaktadır HomeControllerpublic ActionResult Index()
{
return View(new MyModel());
}
[HttpPost]
public ActionResult Index(MyModel model)
{
if (!ModelState.IsValid)
{
// Will Always Be Invalid
}
return View(model);
}
eklenen aşağıdaki eylemleri var
$(function() {
$.validator.addMethod("nevervalid", function() {
return false;
}, "Clientside Should Not Postback");
$.validator.unobtrusive.adapters.addBool("nevervalid");
});
ve Dizin Görünümü
@model CustomAttribute.Models.MyModel
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>MyModel</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.LastName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LastName)
@Html.ValidationMessageFor(model => model.LastName)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.FirstName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.FirstName)
@Html.ValidationMessageFor(model => model.FirstName)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/Scripts/nevervalid.js")
}
sayfa yüklendiğinde, aşağıdaki dosyalar (yüklenen ağ sekmesinden bu var zaman benim web.config'de ilgili alanlar bu
<appSettings>
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
benziyor kromun F12)
http://localhost:7440/
http://localhost:7440/Content/site.css
http://localhost:7440/Scripts/modernizr-2.5.3.js
http://localhost:7440/Scripts/jquery-1.7.1.js
http://localhost:7440/Scripts/jquery.unobtrusive-ajax.js
http://localhost:7440/Scripts/jquery.validate.js
http://localhost:7440/Scripts/jquery.validate.unobtrusive.js
http://localhost:7440/Scripts/nevervalid.js
ve benim özel özniteliğim ilgili ekler. çok ... çok gibi ilk isim girişine
<input class="text-box single-line valid" data-val="true" data-val-nevervalid="Serverside Will Never Validate" id="FirstName" name="FirstName" type="text" value="">
veriye şeyler arayan, ben neden Ah neden bu şey bazı mükemmel burada javascript kodu seyir varken serverside doğrulama yapmak için geri gönderebileceksiniz ilgisi var, size sormak? Bir yerdeki tepenin üstünde aysız bir gecede bir hayvanı feda etmek zorunda mıyım?
bu yardımı mu, doğrulama özelliğinde gerekli tüm işlevleri geçersiz kılma değiliz görünüyor. http://stackoverflow.com/questions/8284207/asp-net-mvc-implement-custom-validator-use-iclientvalidatable –
Merhaba, Patrick, sorunlara bakmak için zaman ayırdığınız için teşekkürler. En küçük tekrarlanabilir kod, ikinci IsValid geçersiz kıldım ... hala işe yaramıyor ... Sanırım ilgili tüm SO soruları geçmiş olmalıyım. ama hiçbir şey ... Birinin kendi dünyaları üzerinde yeniden üretebileceğini umuyorum, deli olduğumu doğrulayın ... – G2Mula