如何解决在PartialView Ajax调用过程中缺少MVC3奇怪的隐藏值
|| 呈现部分视图时,我遇到一个非常奇怪的问题。我的页面有一个表,其中的行是使用局部视图呈现的。这是一个片段<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。但是,在我使用完全相同的局部视图的页面加载中,它呈现得很好。客户端的东西有神奇的枣吗?我想不会,因为它只是控制器动作,也不知道区别。有没有人看过这个。谢谢
解决方法
如果要在发布时更改值,那就是问题。采用:
<input type=\'hidden\' name=\'LineId\' value=\'<%: Model.LineId %>\'/>
而不是Html.HiddenFor。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。