Utworzono częściowy widok w aplikacji MVC 3. Pogląd ten ma silnie typami modelu takiego:ASP.NET MVC PartialView nie wydziela znaczników sprawdzania poprawności
public class ProductViewModel
{
[Required, Display(Name = "Product price")]
public decimal? ProductPrice
{
get;
set;
} ...
}
W moim metody działania I wywołać metodę PartialView jak ten
PartialView("ProductViewModel", products[0]);
Ale na stronie nie widzę żadnych znaczników dla logiki walidacji jednak i nic się nie dzieje, jeśli na stronie są jakieś błędy. Jeśli użyję tego widoku częściowego jako szablonu edytora, zadziała. Każda pomoc jest doceniana.
Edycja: Aby być bardziej szczegółowym, mam formularz HTML i chcę dodać znacznik do niego poprzez aktualizację ajaxową (jeśli użytkownik kliknie przycisk, chcę dodać nowy znacznik do tego formularza). Jeśli statycznie dołączę te formanty, mam na myśli to, że jeśli je wyrenderuję po załadowaniu strony, sprawdzanie poprawności działa, ale jeśli dodaję formanty do tej formy przez wywołanie ajax, nie wstawi się znaczników sprawdzania poprawności dla tych formantów. Moja częściowy widok wygląda następująco:
@Html.LabelFor(x => x.ProductPrice)
@Html.TextBoxFor(x => x.ProductPrice)
@Html.ValidationMessageFor(x => x.ProductPrice)
moja postać wygląda następująco:
@using (Html.BeginForm())
{
<div id="div_Products">
@Html.EditorFor(x => x)
</div>
<input type="submit" value="Compare" />
}
Powyższy kod działa dobrze, działa walidacji. Na stronie serwera I wywołać metodę działania, która wygląda tak:
[HttpPost]
public ActionResult InsertProduct()
{
var newProductVM = new ProductViewModel{ ProductPrice = 789 };
return PartialView("~/Views/Nutrition/EditorTemplates/ProductViewModel.cshtml", newProductVM);
}
zorientowali się, że silnik MVC wstawia tych znaczników walidacji tylko wtedy, gdy uzna, że kontrole są wewnątrz formantu formularza. Kiedy próbuję aktualizować kontrolę formularza za pośrednictwem wywołania ajax, MVC nie ma możliwości, aby wiedzieć, że będą one umieszczone w elemencie formularza i dlatego nie wydaje żadnej logiki sprawdzania poprawności dla nich, jak przypuszczam.
To ma sens, że redaktor "emituje" błędy sprawdzania poprawności i takie, i że widok nie. Czy widzimy kod dla twojego widoku? – rfmodulator
Problem polega na tym, że MVC wstawia znaczniki sprawdzania poprawności tylko wtedy, gdy wykryje, że formanty są w formularzu. Problem polega na tym, że chcę dodać znaczniki do formantu formularza poprzez aktualizację ajax, ale w ten sposób silnik MVC nie wie, że ten znacznik zostanie wstawiony do elementu formularza, a zatem nie będzie wysyłał żadnych znaczników sprawdzania poprawności. – Zoliqa
Możesz wymusić to za pomocą jakiegoś kodu Html.ValidationMessageFor(). Tak jak powiedziałem, pokaż nam swój widok. – rfmodulator