0

Ajax.Beginformこれは、ajaxフォーム内の更新ターゲットで使用できますか?このような:

 using(Ajax.BeginForm("EditPhone", new { id = item.Id.Value }, new AjaxOptions {
       UpdateTargetId = "TRTarget"})) {
    <tr class="gradeA odd" id="TRTarget">
        <input type"submit" value="submit" />
    </tr>
}

アップデート

可能であればOKですが、これの何が問題になっていますか?

これは、別の部分ビューがその中にレンダリングした私の部分ビューです。

 using(Ajax.BeginForm("EditPhone", new { id = item.Id.Value }, new AjaxOptions {
       UpdateTargetId = "TRTarget"})) {
    <tr class="gradeA odd" id="TRTarget">
        @{Html.RenderPartial("_PhoneRow", item);}
    </tr>
}

および_PhoneRow

@model MyModel
<td>@Html.DisplayFor(model=>model.Number)</td>
<td>@Html.DisplayFor(modelItem => Model.PhoneKind)</td>
<td><input type="submit" value="Edit" class="button" /></td>

そしてEditPhone行動:

public ActionResult EditPhone(long Id){

  //Get model
  return PartialView("_EditPhoneRow", model);
}

そして_EditPhoneRow

<td>@Html.EditorFor(model => model.MainModel.Number)</td>
<td>@Html.EditorFor(model => model.MainModel.PhoneKind)</td>
<td><input type="submit" value="Save" class="button" /></td>

実際、私の各行にはAjaxフォームがあるので、編集をクリックすると、表示されているように行を別の行に置き換えたいのですが、編集を追加すると、すべてのページが破棄され、_EditPhoneRowすべてのページを選択したように表示されますupdateTrget。問題?そして、このようにすべての特定の行を変更するためのあなたの提案は何ですか?

4

1 に答える 1

0

HTML仕様によると、フォームはネストできません。これにより無効なHTMLが生成され、ユーザーエージェントによっては、外部または内部のいずれかが機能し<form>なくなります。これはHTML仕様の制限であり、ASP.NETMVCと混同しないでください。ASP.NETMVCとは何の関係もありません。1つの可能性は、を次のように置き換えることAjax.BeginFormですAjax.ActionLink

<tr class="gradeA odd" id="TRTarget">
    @Ajax.ActionLink(
        "Submit", 
        "EditPhone", 
        new { id = item.Id.Value }, 
        new AjaxOptions { UpdateTargetId = "TRTarget" }
    )
</tr>


アップデート:

jquery.unobtrusive-ajax.min.js質問を更新して症状を説明した後、スクリプトをページに参​​照するのを忘れた可能性があると思います。

<script type="text/javascript" src="@Url.Content("~/scripts/jquery.unobtrusive-ajax.min.js")"></script>

このスクリプトを含めない場合、 andAjax.*などのヘルパーは単純なHTMLフォームとアンカーになります。AJAXはまったくありません。これらのヘルパーによって発行されたHTML5データ-*属性を読み取り、目立たないようにAJAX化するのはこのスクリプトです。Ajax.BeginFormAjax.ActionLink

于 2012-07-04T12:51:32.490 に答える