Asp.net mvc MVC将数据从视图传递到cotroller

Asp.net mvc MVC将数据从视图传递到cotroller,asp.net-mvc,visual-studio-2010,Asp.net Mvc,Visual Studio 2010,在将数据从视图传递到控制器方面,我没有什么问题。这是一个小网站,这里有一些代码来解释我的问题 Model: public class TempModel{ public List<Temp> Temp1 { get; set; } } View: @{ using (Html.BeginForm()) { for (int i = 0; i < TempModel.Temp1.Count; i++) { @Html.LabelFo

在将数据从视图传递到控制器方面,我没有什么问题。这是一个小网站,这里有一些代码来解释我的问题

Model:  
public class TempModel{
     public List<Temp> Temp1 { get; set; }
}

View:  
@{ using (Html.BeginForm()) {
   for (int i = 0; i < TempModel.Temp1.Count; i++)
   {
        @Html.LabelFor(model => model.Temp[i].ModifiedBy, "Modified By: ")
        @Html.TextBoxFor(model => model.Temp[i].ModifiedBy)

       <button name="button" value="update">Update</button>
   }
} 

Controller:
[HttpPost]
    public ActionResult Index(TempModel.Temp1, string button){

    switch (button)
        {
            case "delete":
                break;
            case "update":
                UpdateSingleTemp(TempModel.Temp1);
                break;
        }
}
模型:
公共课堂教学模式{
公共列表Temp1{get;set;}
}
视图:
@{使用(Html.BeginForm()){
for(int i=0;imodel.Temp[i].ModifiedBy,“Modified By:”)
@Html.TextBoxFor(model=>model.Temp[i].ModifiedBy)
更新
}
} 
控制器:
[HttpPost]
公共操作结果索引(TempModel.Temp1,字符串按钮){
开关(按钮)
{
案例“删除”:
打破
案例“更新”:
UpdateSingleTemp(TempModel.Temp1);
打破
}
}
现在我要做的是传递当用户按update时,那些Temp1[I]对象中的哪一个被更改了。 必须有一个简单的方法来告诉控制器ItemId或dataIsChanged之类的东西,但我现在就是搞不懂。我对MVC很陌生

编辑: 我设法解决了这个问题。最简单的方法就是使用多个表单并从模型中删除列表

 @for (int i = 0; i < TempModel.Count; i++)     
   @{ using (Html.BeginForm()) {        
   {
        @Html.LabelFor(model => model[i].ModifiedBy, "Modified By: ")
        @Html.TextBoxFor(model => model[i].ModifiedBy)

       <button name="button" value="update">Update</button>
   }
} 
@for(int i=0;imodel[i].ModifiedBy,“Modified By:”)
@Html.TextBoxFor(model=>model[i].ModifiedBy)
更新
}
} 

这不可能直接进行。要跟踪哪个字段是否更新,您必须存储每个字段的哈希值,并且在回发时,将哈希值与提交值的哈希值进行比较,就像WebForms在页面中存储ViewState一样。根据更新的字段,您可以根据更新的字段触发更新方法。

为简单起见,您可以可能会使用。禁用的字段不会发布到服务器,因此用户会尝试更新控制器获取的所有项目。但是,请注意在敏感信息中使用此选项,因为web服务器不应信任用户提供的值-用户可以简单地启用所有字段并发布它们。如果您想知道用户获取的值,此方法非常有用使用新值编辑和覆盖存储库不会导致问题。对于敏感信息,应在服务器端执行更改检查,如@Adeel adviced。 第一次,使用禁用属性渲染所有输入,然后为每个可编辑字段提供附加按钮以启用它们。对于使用禁用属性渲染,请使用