渲染局部视图时,我遇到了一个非常奇怪的问题。我的页面有一个表,其行使用局部视图呈现。这是一个片段
<td>
<img src="@Url.Content("~/Content/Images/edit_icon.gif")" class="editLine" />
<img src="@Url.Content("~/Content/Images/delete_icon.gif")" class="deleteLine" />
@Html.HiddenFor(model => model.LineId)
</td>
首次加载页面时,这会呈现正常。输入标记的值设置为id。但是,当我执行ajax调用并从控制器返回PartialView时,此值始终为0.
控制器代码:
line.LineId = 12; //whatever the actual value is
return PartialView("Line", line);
jquery代码是
$.ajax({
data: {
Id: id
},
success: function (data, textStatus) {
$('#lines').append(data);
}
当我调试并查看时,我看到数据已经回来了
<input name="lineId" id="lineId" value="0" />
我通过EVERYTHING调试并且lineId不是0.然后我通过视图本身进行调试,每当我执行Html.Hidden(“lineId”,anyvalueHere)时,它呈现为0.当我将其更改为Html.Hidden( “lineId_”+ actualId,actualId)它的工作原理。
这是已知/预期的行为吗?我可以想象它没有与重复的id's jiving。但是,它在页面加载时渲染得很好,我使用完全相同的局部视图。客户端的东西是否有神奇的juju?我想象的不是因为它只是一个控制器动作而且它不知道其中的区别。有没有人见过这个。感谢
答案 0 :(得分:3)
如果您在发布时更改了值,那就是问题所在。使用:
<input type='hidden' name='LineId' value='<%: Model.LineId %>'/>
而不是Html.HiddenFor。