我们可以将整个模型传递给j​​avascript asp.net mvc

时间:2011-07-01 09:41:55

标签: javascript asp.net-mvc-2

我有一个问题,在javascript调用表单提交时,模型从控制器更新,但它没有在视图中更新。我想在javascript中将模型更新为新的模型值。以便视图显示最新的模型值  可以这样做吗?

感谢, 迈克尔

1 个答案:

答案 0 :(得分:0)

你的问题非常不清楚,你没有提供任何源代码,这使得事情变得更加不清楚。从您可能发布的各种注释中我假设您正在尝试更新POST操作中的某些模型值,而不将其从模型状态中删除,并且当再次呈现相同的视图时,将显示旧值。

所以我想你有一个看起来很接近的视图模型:

public class MyViewModel
{
    public HttpPostedFileBase File { get; set; }
    public string SomeValue { get; set; }
}

和控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel
        {
            SomeValue = "initial value"
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        // Notice how the SomeValue property is removed from the
        // model state because we are updating its value and so that
        // html helpers don't use the old value
        ModelState.Remove("SomeValue");
        model.SomeValue = "some new value";
        return View(model);
    }
}

和观点:

<% using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" })) { %>
    <div>
        <%= Html.LabelFor(x => x.SomeValue) %>
        <%= Html.EditorFor(x => x.SomeValue) %>
    </div>
    <div>
        <label for="file">Attachment</label>
        <input type="file" name="file" />
    </div>
    <input type="submit" value="OK" />
<% } %>