Как проверить поле hiddenfor в ASP.NET MVC razor view?
У меня есть виджет jQuery selectable в моем представлении razor, который отображается как и обновляется из строки, разделенной запятыми, в таблице SQL Server, как показано ниже:
<ol class="ui-selectable" style="width:auto" id="selectable1"> @{ var color = Model.AvailableColors.Split(','); foreach (var clr in color) { <li class="btn red-mint" style="margin: 10px 0">@clr</li> } } </ol>
Выше, как уже упоминалось, отображается набор цветов, таких как (красный, зеленый, фиолетовый и т. д.) список, который, конечно же, можно выбрать, и пользователь может выбрать только один из списка одновременно.
Я передал выбранное значение элемента списка в скрытое поле, которое затем передается методу действия контроллера с помощью приведенного ниже скрипта.
<script type="text/javascript"> $(document).ready(function () { $("#selectable1").selectable({ selected: function (event, ci) { $(ci.selected).siblings().removeClass("ui-selected"); $("#selectedcolor").val($("#selectable1>li.ui-selected").html()); } }); }); </script>
В моей форме у меня есть атрибут HiddenFor razor для передачи значения выбранного элемента списка контроллеру, как показано ниже:
@Html.HiddenFor(m => m.AvailableColors, new { @id = "selectedcolor" })
Теперь вот что-то, что я застрял и не мог найти решение, ища в интернете. Я хочу, чтобы если ни один элемент не выбран, то проверка должна произойти и должно появиться сообщение проверки для AvailableColors, но я понятия не имею, как это сделать. Какая-нибудь помощь, пожалуйста?
Обратите внимание, что я передаю значения из представления в другой метод действия контроллера, вот метод действия.
public ActionResult AddToCart(int id,int SelectedQuantity, string SelectedSizes, string AvailableColors) { // Retrieve the album from the database var addedProduct = dbContext.Products .Single(product => product.ProductID == id); // Add it to the shopping cart var cart = ShoppingCart.GetCart(this.HttpContext); cart.AddToCart(addedProduct, SelectedQuantity, AvailableColors,SelectedSizes); // Go back to the main store page for more shopping return RedirectToAction("Index"); }
Что я уже пробовал:
Я попытался добавить еще одно свойство в свою модель представления, как показано ниже, с аннотацией данных [Required].
открытый класс SizeColorViewModel
{
[HiddenInput(DisplayValue = false)]
[Ключ]
public int ProductID { get; set; }
[Дисплей(Имя="Выберите Размер")]
[Обязательно(ErrorMessage="Пожалуйста, выберите размер")]
public string AvailableSizes { get; set; }
[Требуемый]
public string SelectedSizes { get; set; }
}
Но даже то, что я не мог проверить это поле, ни малейшей идеи?
Sreekanth Mothukuru
Попробуйте использовать TextboxFor вместо hiddenfor и установить свойство css, чтобы сделать его скрытым, а затем написать обязательный атрибут для того же самого.
Если это не сработает, попробуйте написать пользовательскую проверку..