Validação de @Html.Textbox no MVC4

9

Eu uso uma ação de atualização para atualizar com base na entrada da @Html.Textbox.

@using (Html.BeginForm("Update", "Shopping", new { UserID = Request.QueryString["UserID"] }, FormMethod.Post, new { id = "myForm" }))
   {               
   @Html.ValidationSummary()                
   @Html.Hidden("id", @Request.QueryString["UserID"] as string)
   @Html.Hidden("productid", item.ProductID as string)
   @Html.TextBox("Quantity", item.Quantity)   
   @Html.ValidationMessage("Quantity", "*") 
   @Html.Hidden("unitrate", item.Rate)               
   <input type="submit" value="Update" />
   }

e na classe "Meu modelo"

        [Required(ErrorMessage = "Quantity is required.")]
        [Display(Name = "Quantity")]
        [Range(2, 100, ErrorMessage = "There is not enough inventory for the product to fulfill your order.")]
        public int? Quantity { get; set; }

O problema é que eu não estou recebendo a mensagem de validação quando a caixa de texto está vazia. Mas quando eu uso @ Html.TextBoxFor

   @Html.TextBoxFor(modelItem => item.Quantity)
   @Html.ValidationMessageFor(modelitem => item.Quantity) 


Eu estou recebendo a mensagem de validação. e minha ação de atualização não está funcionando.
Aqui eu tenho duas opções.
1. Como passar o nome da caixa de texto "qty" em @ Html.TextboxFor ?? (ou)
2. Como obter a mensagem de validação em @ Html.Textbox () usando @ Html.ValidationMessage ()

Alguma sugestão ..

EDITAR: Minha ação de atualização -

[HttpPost]
   public ActionResult Update(string id, string productid, int Quantity, decimal unitrate)
        {
        if (ModelState.IsValid)
         {
                   int _records = UpdatePrice(id, productid, Quantity, unitrate);
                    if (_records > 0)
                    {
                        return RedirectToAction("Index1", "Shopping", new { UserID = Request.QueryString["UserID"] });
                    }
                    else
                    {
                        ModelState.AddModelError("","Can Not Update");
                    }
                }
                return View("Index1");
            }
    
por kk1076 23.10.2012 в 07:21
fonte

1 resposta

5

você tem a resposta em sua pergunta quando usa

@Html.TextBoxFor(modelItem => item.Quantity)
@Html.ValidationMessageFor(modelitem => item.Quantity)

você recebe a mensagem de erro porque a validação do modelo MVC funciona nos atributos name como o @Mystere Man disse nos comentários que você está desafiando todas as convenções e convenções é o que o MVC é, altere o nome da propriedade em seu modelar ou usá-lo como está na visão se você quiser alavancar a validação do modelo MVC.

Não totalmente relevante, mas uma boa leitura.

    
por Rafay 23.10.2012 / 07:39
fonte