0

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

有一个关于这个的话题MVC2,人们告诉它可能会在MVC3 http://aspnet.codeplex.com/workitem/5089?ProjectName=aspnet中修复

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

行动:

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

用户界面:

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

视图模型:

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

2 回答 2

1

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

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

于 2012-12-14T13:38:10.187 回答
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);
}
于 2012-12-14T13:36:26.933 回答