C# jQuery对话框按钮不会触发ValidationSummary
在使用了一些小型MVC应用程序之后,我从头开始开发一个新的MVC应用程序。我有一些在jQuery对话框中打开PartialView的功能。此对话框允许用户添加某种新模型。它使用jQuery按钮存储,因此没有submitbutton。问题是,当模型无效时(例如,未填写必填字段),它不会显示验证 短篇小说;该对话框执行它需要执行的操作,除了通过对话框按钮显示我的验证 在主布局中,我有以下参考C# jQuery对话框按钮不会触发ValidationSummary,c#,asp.net-mvc,jquery,C#,Asp.net Mvc,Jquery,在使用了一些小型MVC应用程序之后,我从头开始开发一个新的MVC应用程序。我有一些在jQuery对话框中打开PartialView的功能。此对话框允许用户添加某种新模型。它使用jQuery按钮存储,因此没有submitbutton。问题是,当模型无效时(例如,未填写必填字段),它不会显示验证 短篇小说;该对话框执行它需要执行的操作,除了通过对话框按钮显示我的验证 在主布局中,我有以下参考 <script type="text/javascript" src="@Url.Content("~
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.8.2.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.24.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftAjax.debug.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/MicrosoftMvcValidation.debug.js")"></script>
最后是Create.cshtml的代码
@model PCLPro.Common.Models.Area
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false, "De volgende velden zijn niet goed ingevuld")
<fieldset>
<legend>Area</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Code)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Code)
@Html.ValidationMessageFor(model => model.Code)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
</div>
@model PCLPro.Common.Models.Area
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false,“De volgende velden zijn niet goed ingevuld”)
地区
@LabelFor(model=>model.Code)
@EditorFor(model=>model.Code)
@Html.ValidationMessageFor(model=>model.Code)
@LabelFor(model=>model.Description)
@EditorFor(model=>model.Description)
}愚蠢的问题,但您是否添加了jquery引用以使其正常工作
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript">
我通常使用数据注释,如[Required]等。你能展示你的面积模型吗?所以,在谷歌上搜索其他东西,我找到了我问题的答案。由于它们是局部视图,我需要重新分析客户端的非侵入性验证规则
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');
将其添加到对话框的“打开”功能可以解决我的问题。是的,我有。谢谢你的快速回复!将在上面提到它!你也可以粘贴你的模型吗?好的,我想所有必要的东西都在那里了
[HttpGet]
public PartialViewResult Create()
{
return PartialView();
}
//
// POST: /Area/Create
[HttpPost]
[ValidateInput(true)]
public ActionResult Create(FormCollection collection)
{
var model = new Area();
try
{
model.Code = collection["Code"];
model.Description = collection["Description"].TrimEnd('\"');
if (TryValidateModel(model))
{
// Area naar BLL sturen en opslaan
_areaBLL.AddArea(ref model);
return Json(new { success = true });
}
else
{
return PartialView();
}
}
catch
{
return PartialView();
}
}
@model PCLPro.Common.Models.Area
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(false, "De volgende velden zijn niet goed ingevuld")
<fieldset>
<legend>Area</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Code)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Code)
@Html.ValidationMessageFor(model => model.Code)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Description)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Description)
</div>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript">
$('form').removeData('validator');
$('form').removeData('unobtrusiveValidation');
$.validator.unobtrusive.parse('form');