我有一个问题,在javascript调用表单提交时,模型从控制器更新,但它没有在视图中更新。我想在javascript中将模型更新为新的模型值。以便视图显示最新的模型值 可以这样做吗?
感谢, 迈克尔
答案 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" />
<% } %>