toBeRemoteChecked
numaralı bir üye ve valueToMap
numaralı bir modeliyle bir ModelA
modelim var. Ne zaman bir ModelA
örneğini oluşturursam, MapToA
örneğine de ihtiyacım var, bu yüzden modelA
üyesi ve valueToMap
üyesi olan CreateModelA
modelim var. Form sunulduğunda, modelA
veritabanı tablosuna ModelA
ekleyin ve modelA
ve valueToMap
kimliklerinden oluşan MapToA
için bir örnek oluşturun ve ekleyin. Ben ModelA
bir örneğini düzenlediğinizde kod AçısındanUzaktan Doğrulama ile ASP.NET MVC Bağlama
public class ModelA
{
[Key]
public int ID { get; set; }
[Required, Remote("isValid", "MyController", ErrorMessage = "not valid")]
public string toBeRemoteChecked { get; set; }
}
public class MapToA
{
[Key]
public int Map_ID { get; set; }
[Required]
public int modelAID { get; set; }
[Required]
public int valueToMap { get; set; }
}
public class CreateModelA
{
public ModelA modelA { get; set; };
public int valueToMap { get; set; };
}
, MapToA
değerler önemli değil (ve çoğu durumda birden fazla aynı modelA
kimlikli mapToA
örneği var), ama uzaktan doğrulama ait toBeRemoteChecked
önemli kalır.
Benim Sorun: doğrulama yöntemi için bağlayıcı: Ben olduğu gibi, bir ModelA
düzenlerken o çalışıyor, ama ModelA
CreateModelA
aracılığıyla (Hep yaratıyorum değilken bırakırsanız
public ActionResult isValid(string toBeRemoteChecked) { ... }
toBeRemoteChecked
numaralı telefon numarasından null değerini al. Ben BindPrefix
public ActionResult isValid([Bind(Prefix = "modelA.toBeRemoteChecked")] string toBeRemoteChecked) { ... }
kullandığınızda ben ModelA
oluştururken çalışıp çalışmadığını, ancak bunu düzenlerken ediyorum değilken. Ben (yerine HTML yardımcı yarattığı oluyor modelA.toBeRemoteChecked
ait) @Html.TextBoxFor
ait htmlAttributes bir ... @Name = "toBeRemoteChecked" ...
ekleyerek Create.cshtml içinde "ad" değiştirmeye çalıştığınızda
ardından doğrulama çalışıyor, ancak bağlanmasının Tablonun değeri kaybolur ve değerler veritabanına (null değeri) kaydedildiğinde hatayı alırım.
Oluşturma ve düzenleme için farklı bağlama nasıl yapılır?
Şimdiye kadar, benim geçici çözüm ModelA
ve CreateModelA
: IValidatableObject
yapmak ve benim public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
yönteminde elemanı toBeRemoteChecked
kontrol etmektir. Ancak bu, hata iletilerini formun üstünde ve TextFor kutusunun yerine görüntülemez.
Peki: en iyi çözüm: her iki durumda da uzaktan doğrulama işleminin nasıl yapılacağı nasıl yapılır?
iyi ikinci: ait olduğu yere nesnenin yakınında IValidatableObject
hata iletileri görüntüler (ve gönderdikten sonra, sağ eline hata iletileri almak)
Farklı fikirlere veya çözümlerin nasıl: karşılama.
Teşekkürler.
Teşekkürler. İstemci tarafında doğrulama için, devralma seçeneği denedim - aynı zamanda bir demo projesi çalıştı, ama ben db.ModelAset.Add (createModelA) 'Ben ya veritabanına otomatik olarak eklenen istenmeyen ek sütunlar ile sona ermek veya bir Bu sütunları veritabanından el ile sildikten sonra "geçersiz sütun adı" hatası. Gerekli tüm üyeleri 'createModelA'dan' modelA'ya kopyalayarak denetleyicideki 'modelA'yı el ile oluşturduğumda db.ModelAset.Add (modelA)' yapabilirim. Bunun için kısa bir yol var mı? (gerçek modelimin yaklaşık 20 üyesi var, bu yüzden mümkün, ama çok hoş değil). Teşekkürler. – outofmind
Son paragrafımı tekrar okumanız gerekiyor :) Görünüm modelinin veritabanıyla ilişkisi yok. –
Tamam.Bu nedenle, görünüm modelinden veri modeline veri taşırken ek çabalarım var, yardımınız için teşekkürler :-) – outofmind