首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AjaxForm结果中的AjaxForm

AjaxForm结果中的AjaxForm
EN

Stack Overflow用户
提问于 2012-07-07 13:07:44
回答 1查看 474关注 0票数 1

这是我的观点:

代码语言:javascript
复制
@foreach(var item in Model) {
 <tr id="TR@(item.Id)">
    @{Html.RenderPartial("_PhoneRow", item);}
 </tr>
}

_PhoneRow

代码语言:javascript
复制
@model PhoneModel
@using(Ajax.BeginForm("EditPhone", new { id = Model.Id }, new AjaxOptions {
UpdateTargetId = "TR" + Model.Id
})) {
<td>@Html.DisplayFor(modelItem => Model.PhoneNumber)</td>
<td>@Html.DisplayFor(modelItem => Model.PhoneKind)</td>
<td><input type="submit" value="Edit" /></td>
}

控制器:

代码语言:javascript
复制
public ActionResult EditPhone(long Id) {
  //Get model by id
  return PartialView("_EditPhoneRow", model);
}

public ActionResult SavePhone(PhoneModel model) {
  //Save Phone, and Get Updatet model
  return PartialView("_PhoneRow", model);
}

_EditPhoneRow

代码语言:javascript
复制
    @model PhoneModel
@using(Ajax.BeginForm("SavePhone", new { id = Model.Id }, new AjaxOptions {
UpdateTargetId = "TR" + Model.Id
})) {
<td>@Html.EditorFor(modelItem => Model.PhoneNumber)</td>
<td>@Html.EditorFor(modelItem => Model.PhoneKind)</td>
<td><input type="submit" value="Save" /></td>
}

所以当我点击Edit按钮时,_EditPhoneRow被完美地替换了,但是当我点击Save按钮时,没有任何get,问题在哪里呢?为什么当用新的局部视图更新行时,新的Ajax表单不工作呢?我认为这个问题是非常流行的,我只需要编辑-保存在任何行的Ajax,你的建议是什么?或者它的任何来源或好的样本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-07 15:20:43

您破坏了标记。禁止直接在<tr>下面嵌套<form>元素。当你破坏了标记,你可能会得到不确定的结果。在本例中,这个未定义的结果解释为当您单击第二个表单的submit按钮时,不会引发submit事件,也不会发生任何事情,因为unobtrusive-ajax库为该事件而存在/委托。workaround包含到使用另一个表中。

所以:

_PhoneRo.cshtml

代码语言:javascript
复制
@model PhoneModel
<td>
    @using (Ajax.BeginForm("EditPhone", new { id = Model.Id }, new AjaxOptions { UpdateTargetId = "TR" + Model.Id }))
    {
        <table>
            <tr>
                <td>@Html.DisplayFor(modelItem => modelItem.PhoneNumber)</td>
                <td>@Html.DisplayFor(modelItem => modelItem.PhoneKind)</td>
                <td><input type="submit" value="Edit" /></td>
            </tr>
        </table>
    }
</td>

_EditPhoneRow.cshtml

代码语言:javascript
复制
@model PhoneModel
<td>
    @using (Ajax.BeginForm("SavePhone", new { id = Model.Id }, new AjaxOptions { UpdateTargetId = "TR" + Model.Id }))
    {
        <table>
            <tr>
                <td>@Html.EditorFor(modelItem => modelItem.PhoneNumber)</td>
                <td>@Html.EditorFor(modelItem => modelItem.PhoneKind)</td>
                <td><input type="submit" value="Save" /></td>
            </tr>
        </table>
    }
</td>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11372421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档