Razor 部分和重复的Viewmodel

Razor 部分和重复的Viewmodel,razor,asp.net-mvc-4,Razor,Asp.net Mvc 4,我有一个很奇怪的问题。所以,我的结构是这样的 <div id="tasks"> @Html.Partial("_Tasks", tasks) </div> 在这段时间内,我就有了状态 ... @Html.TextBoxFor(m => m.Name) .... 所以在一个视图中,我渲染了一个部分,然后在里面又是多个部分,在里面是一个表单。当我执行页面加载时,它会工作。问题始于我使用ajax时,所以我使用返回的html执行“按时间编辑”、“发布到服务器”和“

我有一个很奇怪的问题。所以,我的结构是这样的

<div id="tasks">
   @Html.Partial("_Tasks", tasks)
</div>
在这段时间内,我就有了状态

...
@Html.TextBoxFor(m => m.Name)
....
所以在一个视图中,我渲染了一个部分,然后在里面又是多个部分,在里面是一个表单。当我执行页面加载时,它会工作。问题始于我使用ajax时,所以我使用返回的html执行“按时间编辑”、“发布到服务器”和“更新”任务

我是我的控制者我有

...
return View("_Tasks", tasks);
现在的问题是@Html.TextBoxFor(m=>m.Name)生成的所有输入都具有相同的值。为什么?如果我这样做

@Html.DisplayFor(m => m.Name)
我工作很好。我也试过了

@Html.TextBoxFor(m => m.Name, new { Value = Model.Name })
它是有效的,但在我看来,它看起来很粗糙


问题是,为什么会有这种行为?为什么所有TextBoxFor都具有相同的值?

ASP.NET MVC中的默认模型绑定器通过使用输入标记上的名称属性来确定如何将值映射到模型。所有html帮助程序生成标记时都考虑到了这一点

所以当你写作的时候

@Html.TextBoxFor(m => m.Name)
它会产生如下结果:

<input type="text" name="Name" />

但是,当您在局部视图中使用此辅助对象并尝试绑定作为主模型属性的模型时,它将不起作用。部分中的Html帮助程序仍然会生成标记,认为其模型是主模型。因此,您的输入将绑定到主模型的Name属性。你可以看看解决这个问题的方法。在处理post请求时,还要记住以下几点

<input type="text" name="Name" />