각 행에 Ajax.BeginForm이있는 테이블이 있습니다. 이것은 컨트롤러에 데이터를 전달하는 데 유용합니다.onchange = this.form.submit() 대안 Ajax.BeginForm
그러나 POST (RequestsIsAjaxRequest())는 게시자가 POST (고맙습니다. HTX9가이를 지적했습니다.) 때문에 발생하지 않습니다. 실제 문제는 현재 뷰에서 부분 뷰를 업데이트하는 대신 부분 뷰를 반환한다는 것입니다.
아래에서 두 개의 필드 세트를 볼 수 있습니다. 첫 번째는 업데이트하고 싶은 부분이고 Ajax.BeginForm을 사용하여 컨트롤러에 데이터를 보내는 것입니다.
다른 단어 : 드롭 다운 목록에서 항목을 선택하면 위의 표가 업데이트되지만 새 부분보기로 열립니다.
_layout보기에 눈에 거슬리는 ajax js가 있고 비슷한 설정이 응용 프로그램의 다른 부분에서 버튼이있는 게시물 데이터에서 작동합니다.
[HttpPost]
public ActionResult UpdateRatingListRow()
{
if (Request.IsAjaxRequest())
{
//Do stuff, it does not hit this part because of the isAjaxRequest().
return this.PartialView("_RatingList2", myRatingListMarked);
}
return this.PartialView("_RatingList2", null);
}
생성 된 HTML : 여기서
<fieldset>
<legend>Direktbyten</legend>
<div id="container-grid2">
@Html.Partial("_RatingList2", Model.Models2)
</div>
</fieldset>
<fieldset>
<legend>Omarkerade byten(@ViewBag.DirectCount)</legend>
<div id="RatingList">
<table>
<thead>
<tr>
<td>Se hela</td>
<td>Hyra</td>
<td>Rum</td>
<td>Kvm</td>
<td>Gata</td>
<td>Område</td>
<td>Deras prio</td>
<td>Totaltvärde</td>
<td>Min prio</td>
</tr>
</thead>
<tbody>
@foreach (var item in Model.Models1)
{
using (Ajax.BeginForm("UpdateRatingListRow", new AjaxOptions { UpdateTargetId = "container-grid2" }))
{
@Html.Hidden("RatingListId", item.RatingListId)
<tr>
<td>@Html.ActionLink("Till annons", "ViewAd", "Ad", new { id = item.CustomerId }, null)
</td>
<td>@item.Rent</td>
<td>@item.Rooms</td>
<td>@item.SquareMeters</td>
<td>@item.Street</td>
<td>@item.Area</td>
<td>@item.TheirRating</td>
<td>@item.TotalRating</td>
<td>
@Html.Raw("<div id='" + item.RatingListId + "'>")
<select name="SelectedValue" onchange="this.form.submit();">
<option value="0"@if (item.MyRating == "00")
{
@Html.Raw("selected")
}>Ny</option>
<option value="10" @if (item.MyRating == "10")
{
@Html.Raw("selected")
}>Inget intresse</option>
<option value="50"@if (item.MyRating == "50")
{
@Html.Raw("selected")
}>Svagt intressse</option>
<option value="60"@if (item.MyRating == "60")
{
@Html.Raw("selected")
}>Litet intresse-vill ej ha kontakt</option>
<option value="70"@if (item.MyRating == "70")
{
@Html.Raw("selected")
}>Intresserad-Vill ha kontakt</option>
<option value="80"@if (item.MyRating == "80")
{
@Html.Raw("selected")
}>Varit på visning-Vill gå vidare</option>
<option value="90"@if (item.MyRating == "90")
{
@Html.Raw("selected")
}>Intresserad-Vill ha kontakt</option>
<option value="100"@if (item.MyRating == "100")
{
@Html.Raw("selected")
}>Avvaktar värdar</option>
</select>@item.MyRating
@Html.Raw("</div>")
</td>
</tr>
}
}
</tbody>
</table>
</div>
</fieldset>
는 컨트롤러 여기
![enter image description here](https://i.stack.imgur.com/Ye8LT.png)
사용자가 드롭 다운 목록 선택을 변경하면 jQuery를 사용하여 Ajax 요청을 제출해 보았습니까? 'onchange = "this.form.submit();"을 사용하면 보통의 HTML POST로 폼을 전송하기 때문에 Request.IsAjaxRequest()가 false입니다. – HTX9
@ HTX9 예. 있습니다. 내가 원하는대로 다른 테이블을 업데이트하지 않았습니다. 양식을 아약스로 게시하는 방법을 알고 있습니까? –
일반적으로 Ajax.BeginForm 도우미를 사용하는 대신 jQuery를 사용하여 AJAX 요청을 작성하지만 코드를 가지고 놀고 뭔가를 생각해 볼 수 있습니다. – HTX9