0

我在部分视图中有以下代码:

@model MyOrganization.MyApp.Models.ProductListing

@using (Ajax.BeginForm("TagProduct", new AjaxOptions() { UpdateTargetId = "FormContainer" , OnSuccess = "$.validator.unobtrusive.parse('form');" }))
{ 
<p>
    @Html.LabelFor(m => m.ModelNumber):
    @Html.EditorFor(m => m.ModelNumber)
    <A href="javascript:$('form').submit()">Tag Product with This Model Number</A>
    @(Html.ValidationMessageFor(m => m.ModelNumber))
</p> 
}

这个局部视图获得的视图模型被实例化,并且它的许多属性被包含这个局部视图的视图所补充。但是,在这里调用提交时,控制器获取的视图模型只有 ModelNumber 属性水合。所有其他属性都为空,就好像局部视图创建了一个新实例,只有被编辑的属性 (ModelNumber) 获得了一个值。

我知道传递给局部视图的视图模型实例具有所有其他属性值,因为如果我添加一个 @Html.EditorFor(m => m.SerialNumber) 我可以看到包含视图在浏览器中呈现的 SerialNumber 值文本框,当提交表单时,我也将它返回到控制器中。但是,我不想要表单上的 SerialNumber 属性的编辑器——我只希望它在提交时返回到控制器中。

我怎样才能让整个模型回到控制器,因为它被传递到部分视图中,只有部分视图所做的更改?

4

1 回答 1

0

当它发布表单时,它会使用您发布的任何值创建模型的新副本。如果您需要其他值,请将@Html.HiddenFor 您需要发布的其他元素。

于 2012-04-09T15:43:16.163 回答