在局部视图中使用表单中的模型数据

时间:2012-04-09 15:40:38

标签: asp.net-mvc-3 razor

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

@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属性。所有其他属性都为null,就好像部分视图创建了一个新实例,只有已编辑的属性(ModelNumber)获得了值。

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

我怎样才能将整个模型带回控制器,因为只有部分视图所做的更改才传递给局部视图?

1 个答案:

答案 0 :(得分:0)

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