Asp.net mvc MVC视图渲染不考虑在视图模型中传递的数据

Asp.net mvc MVC视图渲染不考虑在视图模型中传递的数据,asp.net-mvc,model-view-controller,model-binding,asp.net-mvc-views,asp.net-mvc-viewmodel,Asp.net Mvc,Model View Controller,Model Binding,Asp.net Mvc Views,Asp.net Mvc Viewmodel,我试图创建一个MVC操作方法,允许用户逐步查看一系列数据库记录。每次用户发布更新时,都会将其提交到数据库,并检索和呈现一条新记录以供查看 但是,我的MVC视图似乎将来自发布视图模型和作为数据库查询结果创建的新视图模型的数据合并在一起。当视图仅呈现来自视图模型的属性值时,它正确地使用来自传递给它的视图模型实例的属性值,但当它将HTML表单控件绑定到视图模型属性时,它使用来自发布的视图模型的值。这意味着单个视图可以在单个视图模型实例上为单个特性显示两个不同的值: 这是一个非常简化的动作方法 pub

我试图创建一个MVC操作方法,允许用户逐步查看一系列数据库记录。每次用户发布更新时,都会将其提交到数据库,并检索和呈现一条新记录以供查看

但是,我的MVC视图似乎将来自发布视图模型和作为数据库查询结果创建的新视图模型的数据合并在一起。当视图仅呈现来自视图模型的属性值时,它正确地使用来自传递给它的视图模型实例的属性值,但当它将HTML表单控件绑定到视图模型属性时,它使用来自发布的视图模型的值。这意味着单个视图可以在单个视图模型实例上为单个特性显示两个不同的值:

这是一个非常简化的动作方法

public ActionResult Index(MyViewModel model)
{
    if (ModelState.IsValid)
    {
        // Write the posted model data to the repository
        // ...

        // Retrieve a new entity for the user to work on
        var alternate = new MyViewModel { Name = "New Name" };

        return View(alternate);
    }

    return View(model);
}
。。。视图模型

public class MyViewModel
{
    [Required]
    public string Name { get; set; }
}
。。。以及用于创建上述图像的视图

@model Mvc4TestApplication.ViewModels.MyViewModel

Name: @Model.Name
@using (Html.BeginForm())
{
    @Html.LabelFor(model => model.Name)
    @Html.TextBoxFor(model => model.Name)
    <input type="submit" value="Submit"/>
}
@model Mvc4TestApplication.ViewModels.MyViewModel
名称:@Model.Name
@使用(Html.BeginForm())
{
@LabelFor(model=>model.Name)
@Html.TextBoxFor(model=>model.Name)
}
我似乎误解了MVC视图发现模型数据的方式。我是否应该使用一些替代语法来显式地告诉视图将其表单控件绑定到传递给它的视图模型

谢谢


蒂姆。

尝试清除模型状态。HTMLHelper使用ModelState获取值

ModelState.Clear();

返回视图()之前。

回答得很好。谢谢你解决了我的问题。