提交后,视图模型中的标签消失

时间:2013-01-02 18:55:47

标签: c# asp.net-mvc razor html-post

为什么提交后TextFromDb标签会消失?我如何解决它?我发现在帖子上它不在VM中。

控制器:

    public ActionResult Index()
    {
        var vm = new TestLabelVM();
        vm.TextFromDb = "Text from database";
        return View(vm);
    }

    [HttpPost]
    public ActionResult Index(TestLabelVM vm)
    {
        SaveToDb(vm.TextOpinion); 

        return View(vm);
    }

我的观点模型:

public class TestLabelVM
{
    public string TextFromDb { get; set; }
    public string TextOpinion { get; set; }
}

我的网页Index.cshtml

@model TestLabelVM
@using (Html.BeginForm("Index", "TestLabel"))
{
    @Html.EditorFor(m => m.TextOpinion)
    <br/>
    @Model.TextFromDb
    <br/>
    <input type="submit" />    
}

2 个答案:

答案 0 :(得分:1)

这是因为您从未在任何地方保存该文字。只有浏览器回发到服务器的内容(即输入)才能由模型绑定器自动加载。

在帖子处理程序中再次从DB中获取文本。

答案 1 :(得分:1)

添加

@Html.HiddenFor(m => m.TextFromDb)

在表单内。这将允许mvc的模型绑定到...等待它...将值绑定到模型,然后在post动作呈现视图时显示它。