MVC4를 사용 중입니다. 눈에 잘 띄지 않는 자바 스크립트는 내 프로젝트에서 사용 가능하고 참조됩니다. Ajax 스크립트가 공유 된 마스터 페이지에로드되고 있습니다. FireBug는 오류나 404를보고하지 않습니다.MVC Ajax 양식의 전체 내용보기.
내 페이지에 Text
상자를 추가했습니다.이 상자는 내 Ajax
양식의 Hidden
필드 내용을 업데이트합니다. 사용자가 키 및 KeyUp
이벤트가 발생을 누를 때, 나는 호출하여 제출 내 Ajax
양식을 강제로 :
$("form#ajaxForm").trigger("submit");
. 이것은 잘 작동합니다. 양식이 배경 뒤에서 제출되고 컨트롤러 이벤트가 시작됩니다. 모델은 사용자의 입력을 기반으로 새 데이터로 업데이트됩니다.
그러나 이상한 곳에서는 결과가 내 양식으로 돌아갑니다. 내 양식 div
태그의 전체 내용이 결과로 대체됩니다. 전체 페이지입니다. 기본 모달 콘텐츠 지금 자신을 포함하는 방법
<div id="basic-modal-content"">
<input id="breed" type="text"/>
<div>
<form id="ajaxForm" method="post" data-ajax-update="#results" data-ajax-mode="replace" data-ajax="true" action="/Poultry/ListBreeds?Length=7">
<div id="results">
->THIS AREA IS GETTING REPLACED WITH THE ENTIRE FORM <-
<div id="basic-modal-content">
</div>
</div>
</form>
- 공지 사항, 다른 기본 모달 콘텐츠. 결과 div는 전체보기가 아닌 업데이트 결과 만 포함해야합니다. 다음과 같이
내 코드는 다음과 같습니다
보기 (BreedSelectorPartial.cshtml)
@model IQueryable<Inert.BreedViewModel>
<script type="text/javascript">
$(document).ready(function() {
$("#breed").keyup(function (e) {
$("input[name=breedSearch]").val($("#breed").val());
$("form#ajaxForm").trigger("submit");
});
});
</script>
<div id="basic-modal-content">
<input id="breed" type="text" style="width:100%; height:22px;" />
<div>
<div style="margin-top: 4px;">
<label for="breed">Begin by typing a breed, e.g. <span style="font-style: italic">Wyandotte</span></label>
</div>
</div>
@using (Ajax.BeginForm("ListBreeds", "Poultry", new AjaxOptions {UpdateTargetId = "results" }, new { id = "ajaxForm" }))
{
<input id="breedSearch" name="breedSearch" type="hidden" />
}
<div id="results" style="height: 320px; color: black; margin-top: 12px; font-size: 18px;">
@{
var grid = new WebGrid(Model, ajaxUpdateContainerId: "results");
int c = Model.Count();
}
@grid.GetHtml(tableStyle: "webgrid",
alternatingRowStyle: "webgrid-alternating-row",
rowStyle: "webgrid-row-style",
displayHeader: true)
</div>
</div>
<script type="text/javascript" src="/scripts/jquery.simplemodal.js"></script>
<script type="text/javascript" src="/scripts/basic.js"></script>
컨트롤러 (PoultryController.cs)
[HttpPost]
public ActionResult ListBreeds(string breedSearch)
{
InertDatabaseEntitiesConnection db = new InertDatabaseEntitiesConnection();
var breeds = db.Breeds.Where(q => q.Name.Contains(breedSearch));
var names = breeds.Select(q => new BreedViewModel { Name = q.Name });
return PartialView("BreedSelectorPartial", names);
}
,536,
나는 이것이 어디에서 잘못 될지 잘 모르겠습니다. 나는 이것을 알아 내려고 애 쓰면서 몇 시간을 보냈다. 어떤 해결책?
의를 ... 메인 뷰 모델과 일치하는 반환 객체 @model IQueryable ... 해당 뷰를 direcly 호출 –
Dasarp
'BreedSelectorPartial.cshtml' 부분의 내용을 표시 할 수 있습니까? –
@DarinDimitrov 위의 마크 업 코드는'BreedSelectorPartial.cshtml' 뷰입니다. 내가하려고하는 것은 업데이트 된 모델을 얻기 위해 뷰를 호출하는 것입니다. 그러나 * results * div의 영역 만 변경하면됩니다. –