【发布时间】:2014-10-06 20:37:44
【问题描述】:
我的控制器中有一个动作:
public PartialViewResult MyAction(int? myId, int? myId2)
{
MyModel model = new MyModel() { MyId = 10, MyId2 = 20 }
return PartialView(model);
}
这是我的看法:
@model StartSite.Models.Shared.MyModel
@using (Html.BeginForm())
{
@Html.HiddenFor(m => m.MyId)
@Html.HiddenFor(m => m.MyId2)
<p>
<input type="submit" value="Submin" />
</p>
}
让我们使用参数 myId=1&myId2=2 调用 MyAction。但是模型是用不同的值创建的 new MyModel() { MyId = 10, MyId2 = 20 }。应该呈现什么?正如我所料,它应该是:
<input id="MyId" name="MyId" type="hidden" value="10">
<input id="MyId2" name="MyId2" type="hidden" value="20">
但实际上结果是:
<input id="MyId" name="MyId" type="hidden" value="1">
<input id="MyId2" name="MyId2" type="hidden" value="2">
我猜 Html.HiddenFor 的值不是来自我的模型,而是来自 Reauest.QueryString,即 myId=1&myId2=2呈现视图的那一刻。
为什么会这样?这是预期的行为吗?
更新 1: 我已将我的问题编辑得更清楚。
【问题讨论】:
-
myId2来自哪里?那是复制粘贴错误,还是我们正在查看您的控制器的属性? (它免于动作签名) -
是的,很抱歉这个错字。现在是正确的。
-
制作返回视图而不是返回局部视图,如果您仍然遇到此错误,请告诉我。如果没有,我可以向您解释详细信息。
-
我试过了,没用。我认为这两种情况的 html-helper 逻辑是相同的。
标签: asp.net-mvc-4 html-helper razorengine