显示字段上内联 AJAX 调用的验证错误
Show the validation error from the AJAX calls inline on the field
当 AJAX 调用返回验证失败时,我试图在字段(内联)上显示错误消息。
<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")" readonly />
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" id="txt" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
<input type="hidden" id="orderId" name="orderId" value="@Model.OrderId" />
<button id="button">Click Me</button>
</form>
</div>
</div>
@section Scripts {
<script type="text/javascript">
$("#button").click(function () {
var orderedQuantity = $("#txt").val();
var orderId = $("#orderId").val();
var data = {
orderId: orderId,
orderedQuantity: orderedQuantity
};
$.ajax({
type: 'POST',
url: '@Url.Action("EditItem", "Orders")',
data: data,
dataType: "json",
success: function (result) {
if (result.status === "NotAvailable") {
alert("NotAvailable");
$("#errorMessage").val("Enter a valid Quantity");
}
else {
var url = '@Url.Action("Index", "Orders")';
window.location.href = url + "?custEmail=xyz@rrr.org";
}
},
error: function (error) {
alert(error);
}
});
});
</script>
}
表单和 AJAX 调用如下所示
当从控制器操作返回的 result.status
是 "NotAvailable"
时,我正在创建类似 $("#errorMessage").val("Enter a valid Quantity");
的错误消息,并在我的字段顶部使用它
<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")" readonly />
当我点击下面的按钮后尝试测试验证失败的情况时,我看到的是
如何返回同一屏幕并在字段上显示错误 Enter a valid Quantity
您需要进行以下修改:
像这样设置按钮类型:<button id="button" type="button">Update</button>
而不是 <button id="button">Click Me</button>
Note: By defualt button type is submit so it always post additional form POST
Request so that you are redirecting to that
page.
输出:
更新: 虽然我认为你的 errorMessage
标签看起来不错,但我通常使用 javascript 或 Jquery 不同的标签幻灯片如下是完整代码供您参考。随意根据您的要求进行定制。
HTML:
<div>
<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="errorMessage" readonly />
<form asp-action="EditItem">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" id="txt" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
<input type="hidden" id="orderId" name="orderId" value="123456" />
<input type="hidden" id="inventoryorderId" name="inventoryorderId" value="22222" />
<input type="hidden" id="inventoryId" name="inventoryId" value="3333" />
<button id="button" type="button">Update</button>
</form>
</div>
Javascript:
@section Scripts {
<script type="text/javascript">
$("#button").click(function () {
var orderedQuantity = $("#txt").val();
var orderId = $("#orderId").val();
var inventoryorderId = $("#inventoryorderId").val();
var inventoryId = $("#inventoryId").val();
var data = {
orderId: orderId,
inventoryorderId: inventoryorderId,
inventoryId: inventoryId,
orderedQuantity: orderedQuantity,
};
$.ajax({
type: 'POST',
url: '@Url.Action("EditItem", "Order")',
data: data,
dataType: "json",
success: function (data) {
console.log(data);
if (data.status === "NotAvailable") {
alert("NotAvailable");
$("#errorMessage").val("Enter a valid Quantity");
return false;
}
else {
alert("Else fired");
var url = '@Url.Action("Index", "Order")';
window.location.href = url;
}
},
error: function (error) {
alert("Alert");
}
});
});
</script>
}
希望能解决您的问题。
当 AJAX 调用返回验证失败时,我试图在字段(内联)上显示错误消息。
<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")" readonly />
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" id="txt" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
<input type="hidden" id="orderId" name="orderId" value="@Model.OrderId" />
<button id="button">Click Me</button>
</form>
</div>
</div>
@section Scripts {
<script type="text/javascript">
$("#button").click(function () {
var orderedQuantity = $("#txt").val();
var orderId = $("#orderId").val();
var data = {
orderId: orderId,
orderedQuantity: orderedQuantity
};
$.ajax({
type: 'POST',
url: '@Url.Action("EditItem", "Orders")',
data: data,
dataType: "json",
success: function (result) {
if (result.status === "NotAvailable") {
alert("NotAvailable");
$("#errorMessage").val("Enter a valid Quantity");
}
else {
var url = '@Url.Action("Index", "Orders")';
window.location.href = url + "?custEmail=xyz@rrr.org";
}
},
error: function (error) {
alert(error);
}
});
});
</script>
}
表单和 AJAX 调用如下所示
当从控制器操作返回的 result.status
是 "NotAvailable"
时,我正在创建类似 $("#errorMessage").val("Enter a valid Quantity");
的错误消息,并在我的字段顶部使用它
<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="@("errorMessage")" readonly />
当我点击下面的按钮后尝试测试验证失败的情况时,我看到的是
如何返回同一屏幕并在字段上显示错误 Enter a valid Quantity
您需要进行以下修改:
像这样设置按钮类型:<button id="button" type="button">Update</button>
而不是 <button id="button">Click Me</button>
Note: By defualt button type is submit so it always post additional form
POST
Request so that you are redirecting to that page.
输出:
更新: 虽然我认为你的 errorMessage
标签看起来不错,但我通常使用 javascript 或 Jquery 不同的标签幻灯片如下是完整代码供您参考。随意根据您的要求进行定制。
HTML:
<div>
<input type="text" class="text-danger float-right" style="border:none;font-size: smaller" id="errorMessage" readonly />
<form asp-action="EditItem">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="OrderQuantity" class="control-label"></label>
<input asp-for="OrderQuantity" id="txt" class="form-control" />
<span asp-validation-for="OrderQuantity" class="text-danger"></span>
</div>
<input type="hidden" id="orderId" name="orderId" value="123456" />
<input type="hidden" id="inventoryorderId" name="inventoryorderId" value="22222" />
<input type="hidden" id="inventoryId" name="inventoryId" value="3333" />
<button id="button" type="button">Update</button>
</form>
</div>
Javascript:
@section Scripts {
<script type="text/javascript">
$("#button").click(function () {
var orderedQuantity = $("#txt").val();
var orderId = $("#orderId").val();
var inventoryorderId = $("#inventoryorderId").val();
var inventoryId = $("#inventoryId").val();
var data = {
orderId: orderId,
inventoryorderId: inventoryorderId,
inventoryId: inventoryId,
orderedQuantity: orderedQuantity,
};
$.ajax({
type: 'POST',
url: '@Url.Action("EditItem", "Order")',
data: data,
dataType: "json",
success: function (data) {
console.log(data);
if (data.status === "NotAvailable") {
alert("NotAvailable");
$("#errorMessage").val("Enter a valid Quantity");
return false;
}
else {
alert("Else fired");
var url = '@Url.Action("Index", "Order")';
window.location.href = url;
}
},
error: function (error) {
alert("Alert");
}
});
});
</script>
}
希望能解决您的问题。