i'am с использованием MVC, C#, бритву и Knockout.jsKnockout.js строки не будет проверять в MVC
Модели> SKUPrice.cs
[Required]
[Display(Name = "SRP")]
public Decimal SRP { get; set; }
Контроллеры> SKUPriceController. CS
public ActionResult Create(int id = 1)
{
return View();
}
[HttpPost]
public ActionResult Create(List<SKUPrice> skuprices)
{
if (ModelState.IsValid) {
foreach (SKUPrice skuprice in skuprices)
{
db.SKUPrices.AddObject(skuprice);
db.SaveChanges();
}
}
}
return View();
Просмотров> SKUPrice> Create.cshtml
<table>
<thead>
<tr>
<th>
@Html.LabelFor(model => model[0].SRP)
</th>
<th>
</th>
<tr>
<tr>
<td>
<input class="form-control" data-val="true" data-val-number="The field SRP must be a number."
data-val-required="The SRP field is required." name="[0].SRP" type="number" value="0" step="0.25">
<span class="help-block"><span class="field-validation-valid" data-valmsg-for="[0].SRP"
data-valmsg-replace="true"></span></span>
</td>
<td>
<input type="button" onclick="" value="Add" class="btn btn-primary" data-bind="click: addPrice">
</td>
</tr>
</thead>
<tbody data-bind="foreach: SKUPrice">
<td>
<input class="form-control" data-val="true" data-val-number="The field SRP must be a number."
data-val-required="The SRP field is required." type="number" value="0" step="0.01" data-bind="attr: { name: '[' + ($index() + 1) + '].SRP'}">
<span class="help-block"><span class="field-validation-valid" data-valmsg-replace="true"
data-bind="attr: { 'data-valmsg-for': '[' + ($index() + 1) + '].SRP'}"></span>
</span>
</td>
<td>
<i class="fa fa-close" data-bind="click: $parent.removePrice" style="cursor: pointer; color: Red;"></i>
</td>
</tbody>
</table>
<input type="submit" value="Save" name="Save" class="btn btn-primary" />
Сценарии> main.js
function ViewModel() {
var self = this;
self.SKUPrice = ko.observableArray([]);
self.addPrice = function() {
self.SKUPrice.push({ count: "" });
};
self.removePrice = function() {
self.SKUPrice.remove(this);
};
}
ko.applyBindings(new ViewModel());
Когда я вхожу не-число в первой строке и нажмите сохранить его подтверждено, но когда я добавляю вторую строку и ввести не-номер значение не проверяет другие строки, кроме первой строки. В чем проблема с этим?
Похоже, что data-val в <input type="text" data-val="true" />
не работает?
Можем ли мы увидеть больше rour main.js? Где-то у вас, по-видимому, есть код, который применяет плагин проверки - я думаю, что это ключ - я нарисую ответ ниже, чтобы объяснить. – sifriday