在回发后更改数据后,如何使用新值填充HTML内容?

时间:2012-12-14 13:33:11

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-viewmodel

我有MVC3 razor个申请。在我提交表单并在Action我正在更改ViewModel内容后,我无法看到填充的新值。

MVC2中有一个关于此问题的话题,其中有人说它可以在MVC3中修复 http://aspnet.codeplex.com/workitem/5089?ProjectName=aspnet

你能说出是否有选项可以做到这一点,或者更好的方法(解决方法)在没有使用回发的情况下更新UI?

动作:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    model.Value = "new value"
    return View("Index", model);
}

UI:

@Html.HiddenFor(x => x.Value)

视图模型:

public class MyViewModel
{
   public string Value { get;set; }
}

2 个答案:

答案 0 :(得分:1)

看起来它正在使用已发布的ModelState值。

如果使用ModelState.Clear()清除ModelState,则您设置的新值应位于隐藏字段中。

答案 1 :(得分:0)

您应该使用formpost行动。

@model MyViewModel

@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
    @Html.HiddenFor(x=>x.Value)
    <input type="submit" value="Submit" />
}

<强>控制器

//
public ActionResult Index()
{
    MyViewModel model = new MyViewModel();
    model.Value = "old value";

    return View("Index", model);
}

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    //get posted model values (changed value by view "new value")
    string changed_value = model.Value;

    // you can return model again if your model.State is false or after update
    return View("Index", model);
}