아약스와 업데이트를 사용하여 양식을 처음 게시 할 때 문제가 발생하지만 두 번째는 전체 게시물을 다시 대체하고 대체합니다. 내 부분보기 페이지. 나는 내가 UnobtrusiveJavaScriptEnabled = true
을 가지고 있고, live
을 on
으로 바꿨다는 것을 눈치 채지 못했지만 ... 같은 문제가 있습니다.PartialView의 MVC AJAX 폼이 아약스에 처음 게시되면 두 번째 시간은 전체 게시물이됩니다.
업데이트 : ModelState가 유효하지 않은 경우에만 발생합니다.
이것은 내가 그것을 해결하지 않은 여전히 답을 찾는 오지만 한 닫힙니다 :이 비추 수 Ajax.BeginForm doesn't work properly
모든 빛을 이해할 수있을 것이다.
이 내 메인 뷰 (테스터)이다
@{
ViewBag.Title = "testView";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
My TestView</h2>
@{Html.RenderPartial("_Form", new Project.Models.TestModel());}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
이 내 부분 뷰 형태 (_form)이다
public ActionResult Tester()
{
return View();
}
[HttpPost]
public PartialViewResult TesterProjUpdate(TestModel model)
{
if (!ModelState.IsValid)
return PartialView("_Form", model);
TestProj.Vehicle vehicle = new TestProj.Vehicle();
if (Request.IsAjaxRequest())
{
return PartialView("_Vehicle", vehicle);
}
return PartialView("_Form", model);
}
및이 내 컨트롤러
@model Project.Models.TestModel
<div class="updatable">
<form method="post" action="@Url.Action("TestProjUpdate")" data-site-ajax="true" data-site-target=".updatable">
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.TextField)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.TextField)
@Html.ValidationMessageFor(model => model.TextField)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
</form>
</div>
드디어 내 jQuery 아약스 전화 :
$(function() {
var ajaxFormSubmit = function() {
var $form = $(this);
var options = {
url: $form.attr("action"),
type: $form.attr("method"),
data: $form.serialize(),
};
$.ajax(options).done(function (data) {
var $target = $($form.attr("data-site-target"));
$target.replaceWith(data);
});
return false;
};
$("form[data-site-ajax='true']").submit(ajaxFormSubmit);
});
나를 도와 줄 수있는 도움이 정말 좋을 것입니다!
그 덕분에 완벽한 감사 케빈! – dhtor