3

我正在尝试创建一个 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"/>
}

似乎我误解了 MVC 视图发现其模型数据的方式。我应该使用一些替代语法来明确告诉视图将其表单控件绑定到传递给它的视图模型吗?

谢谢,

蒂姆。

4

1 回答 1

4

尝试清除 ModelState。htmlhelpers 使用 ModelState 来获取值。

ModelState.Clear();

在返回 View() 之前

于 2012-11-12T09:30:33.937 回答