HTML.BeginForm/Ajax.开始表单在局部视图中不起作用
HTML.BeginForm/Ajax.Begin Form not working in Partial View
我有一个包含 table 的部分视图,数据动态附加到 table。当我单击该表单中的保存按钮时,我的控制器方法没有触发。
我的部分视图请看下面的代码。
<div id="cavitypartial">
<table id="CTable" class=" table table-bordered">
<tr>
<th></th>
<th>C Name</th>
<th>Number of C</th>
@foreach (var item in Model.PLByS)
{
<th>@item.PLName (CT/sec)</th>
}
<th>Comments</th>
</tr>
@foreach (var item in Model.CByS)
{
//using (Html.BeginForm("CavityUpdate", "Cavity", FormMethod.Post, new { id = "tblCavity" }))
using (Ajax.BeginForm("CavityUpdate", "Cavity", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "cavitypartial" }))
{
<tr id="@item.CavityID">
<td><a onclick='DeleteRow(this,@item.CavityID);'><img src='/Content/Images/trash_empty.png' class='btndelete' alt='x' /></a><a onclick='EditRow(this,@item.CavityID);'><img src='~/Content/Images/edit.png' class='btndelete' alt='x' /></a></td>
<td><input type="text" id="cn_@item.CavityID" name="cn_@item.CavityID" value="@item.CavityName" disabled /></td>
<td><input type="text" id="cp_@item.CavityID" name="cp_@item.CavityID" class="addcavity" value="@item.NumberOfParts" disabled /> <input type="hidden" id="h_@item.CavityID" name="h_@item.CavityID" /> </td>
@foreach (var Cavitem in Model.Cavities)
{
if (item.CavityID == Cavitem.CavityID)
{
<td><input type="text" id="c_@(item.CavityID)p_@(Cavitem.ProductLineID)" name="c_@(item.CavityID)p_@(Cavitem.ProductLineID)" class="addcavity" value="@Cavitem.Time" disabled /></td>
}
}
<td><input type="text" id="cn_@item.CavityID" name="cc_@item.CavityID" value="@item.comments" disabled /> <input type="hidden" id="h_@item.CavityID" name="h_@item.CavityID" /> </td>
<td id="Savecommand"><input type="submit" id="btnS_@item.CavityID" value="Save" /></td>
<td id="Savecommand"><input type="button" id="btnC_@item.CavityID" onclick="cancelEditing(this,@item.CavityID);" value="Cancel" /></td>
</tr>
}
}
</table>
</div>
下面是正在渲染局部视图的主页
<div id="cavitypartial">
@Html.Partial("CavityPartialView")
</div>
我不会使用除此之外的任何其他形式。
控制器代码如下:
[HttpPost]
public ActionResult CavityUpdate()
{
// logic
}
return RedirectToAction("Cavity", "Cavity", new { id = siteid });
}
谁能帮我解决这个问题?
启用提交按钮。从中删除 'disabled' 属性。
编辑:
您不能将表单元素创建为 table 行。而是尝试以下语法:
<table>
@foreach (var item in Model.CByS) {
<tr>
<td>
@using(Ajax.BeginForm("CavityUpdate", "Cavity", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "cavitypartial" })){
//your code
<table>
<tr>
<td></td>
</tr>
</table>
}
</td>
</tr>
}
</table>
我的控制器方法终于从部分视图中触发了。我犯的错误是,我将 Html.Begin 表格放在 div 标签内。我将它移到外面并将整个部分视图放在 BeginForm 下。
现在一切正常。
我有一个包含 table 的部分视图,数据动态附加到 table。当我单击该表单中的保存按钮时,我的控制器方法没有触发。
我的部分视图请看下面的代码。
<div id="cavitypartial">
<table id="CTable" class=" table table-bordered">
<tr>
<th></th>
<th>C Name</th>
<th>Number of C</th>
@foreach (var item in Model.PLByS)
{
<th>@item.PLName (CT/sec)</th>
}
<th>Comments</th>
</tr>
@foreach (var item in Model.CByS)
{
//using (Html.BeginForm("CavityUpdate", "Cavity", FormMethod.Post, new { id = "tblCavity" }))
using (Ajax.BeginForm("CavityUpdate", "Cavity", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "cavitypartial" }))
{
<tr id="@item.CavityID">
<td><a onclick='DeleteRow(this,@item.CavityID);'><img src='/Content/Images/trash_empty.png' class='btndelete' alt='x' /></a><a onclick='EditRow(this,@item.CavityID);'><img src='~/Content/Images/edit.png' class='btndelete' alt='x' /></a></td>
<td><input type="text" id="cn_@item.CavityID" name="cn_@item.CavityID" value="@item.CavityName" disabled /></td>
<td><input type="text" id="cp_@item.CavityID" name="cp_@item.CavityID" class="addcavity" value="@item.NumberOfParts" disabled /> <input type="hidden" id="h_@item.CavityID" name="h_@item.CavityID" /> </td>
@foreach (var Cavitem in Model.Cavities)
{
if (item.CavityID == Cavitem.CavityID)
{
<td><input type="text" id="c_@(item.CavityID)p_@(Cavitem.ProductLineID)" name="c_@(item.CavityID)p_@(Cavitem.ProductLineID)" class="addcavity" value="@Cavitem.Time" disabled /></td>
}
}
<td><input type="text" id="cn_@item.CavityID" name="cc_@item.CavityID" value="@item.comments" disabled /> <input type="hidden" id="h_@item.CavityID" name="h_@item.CavityID" /> </td>
<td id="Savecommand"><input type="submit" id="btnS_@item.CavityID" value="Save" /></td>
<td id="Savecommand"><input type="button" id="btnC_@item.CavityID" onclick="cancelEditing(this,@item.CavityID);" value="Cancel" /></td>
</tr>
}
}
</table>
</div>
下面是正在渲染局部视图的主页
<div id="cavitypartial">
@Html.Partial("CavityPartialView")
</div>
我不会使用除此之外的任何其他形式。
控制器代码如下:
[HttpPost]
public ActionResult CavityUpdate()
{
// logic
}
return RedirectToAction("Cavity", "Cavity", new { id = siteid });
}
谁能帮我解决这个问题?
启用提交按钮。从中删除 'disabled' 属性。
编辑: 您不能将表单元素创建为 table 行。而是尝试以下语法:
<table>
@foreach (var item in Model.CByS) {
<tr>
<td>
@using(Ajax.BeginForm("CavityUpdate", "Cavity", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "cavitypartial" })){
//your code
<table>
<tr>
<td></td>
</tr>
</table>
}
</td>
</tr>
}
</table>
我的控制器方法终于从部分视图中触发了。我犯的错误是,我将 Html.Begin 表格放在 div 标签内。我将它移到外面并将整个部分视图放在 BeginForm 下。
现在一切正常。