gpt4 book ai didi

.net - 部分 View 没有 data-val* 属性

转载 作者:行者123 更新时间:2023-12-04 06:20:16 26 4
gpt4 key购买 nike

我有一个带有 Html.BeginForm() 的 View ,它调用在主视图模型中传递的部分 View (下面提到并且没有表单)。该模型具有数据注释。

如果我在不选择正确值的情况下尝试提交,则页面验证的初始加载效果很好。

我在页面上还有另一个按钮,如果单击它会加载页面上相同局部 View 的另一个实例,使用 $.ajax() 发布到 Controller ,它只返回 PartialView,并将其附加到现有的 div。

如果我现在尝试提交这些动态控件的表单,尽管它们绑定(bind)到同一个模型并且虽然我设置了正确的 .ValidationMessageFor 助手,但它们不会出现验证,因为这些控件似乎不是使用 data-val 生成的* 属性。

我使用 fiddler 并发现 $.ajax 发布到 Controller ,生成带有简单且没有生成的 ValidationMessage 的部分 View 。因此不能使用不显眼的 javascript 来添加动态控件。

是否有必要始终将 View 放在表单中?在这种情况下,我将有嵌套的表单,这将无法正常工作。

编辑 1:
正如 Adam Tuliper 在 question 中提到的那样ViewContext.FormContext = new FormContext 生成具有所有 data-val* 属性的局部 View 。因此回答了我上面的问题。
现在动态内容的验证没有触发。所以根据 Erick (在评论部分),我删除了表单验证器 [form.removeData('validator');] 然后它也开始验证动态内容。

下面是部分 View

         <div id="divVehicleInfo">                        
<fieldset>
<legend>Vehicle Information</legend>
@for (var i = 0; i < Model.QuoteInput.Vehicle.Count(); i++)
{
<div class="editor-label">
@Html.LabelFor(model => model.Vehicle[i].VehicleMake)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Vehicle[i].VehicleMake)
@Html.ValidationMessageFor(model => model.Vehicle[i].VehicleMake)
</div>

<div class="editor-label">
@Html.LabelFor(model => model.Vehicle[i].VehicleModel)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Vehicle[i].VehicleModel)
@Html.ValidationMessageFor(model => model.Vehicle[i].VehicleModel)
</div>

}
</fieldset>
</div>

这是局部 View 的模型
    public class Vehicle
{
public int VehicleID { get; set; }

[Required]
[DisplayName("Vehicle Make")]
public string VehicleMake { get; set; }

[Required]
[DisplayName("Vehicle Model")]
public string VehicleModel { get; set; }

}

最佳答案

您需要在局部 View 中包含不显眼的验证脚本。

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

部分 View 不会继承它所在页面的脚本,除非它们在 dom 更新后再次执行。

关于.net - 部分 View 没有 data-val* 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6680156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com