Sys.Mvc.FormContext._Application_Load();
도 호출했는지 확인하십시오.
예를 들어 보겠습니다.
보기 모델 :
public class MyViewModel
{
[Required]
public string Foo { get; set; }
}
컨트롤러 :
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Create()
{
return PartialView(new MyViewModel());
}
[HttpPost]
public ActionResult Create(MyViewModel model)
{
return Content("thanks for submitting");
}
}
보기 (Index.cshtml
)
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
<script type="text/javascript">
$.get('@Url.Action("create")', function (result) {
$('#foo').html(result);
// That's the important bit that you were probably missing
Sys.Mvc.FormContext._Application_Load();
$('form').submit(function() {
if (Sys.Mvc.FormContext.getValidationForForm(this).validate('submit').length > 0) {
return false;
}
});
});
</script>
<div id="foo"></div>
동적로드 형태 (Create.cshtml
)를 포함하는 부분 :
을
@model MyViewModel
@{Html.EnableClientValidation(true);}
@using (Html.BeginForm())
{
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
@Html.ValidationMessageFor(x => x.Foo)
<button type="submit">OK</button>
}
참고 : 분명히이 답변은 권장되는 jQuery unobtrusive 및 jQuery 유효성 검사 플러그인 대신에 완전히 폐기 된 Microsoft*.js
스크립트를 사용하려는 경우에만 유효합니다. 따라서 web.config에 <add key="UnobtrusiveJavaScriptEnabled" value="false"/>
을 설정 한 경우에만 유효합니다.
몇 가지 문제가 있기 때문에 나는 눈에 잘 띄지 않습니다. 그래서 그것없이 해결책은 무엇입니까? –
처음부터 직접 작성하십시오. – linkerro