我们可以将整个模型传递给javascript asp.net mvc吗
我有一个问题,在表单提交的javascript调用中,模型从控制器得到更新,但它没有在视图中更新。我正在考虑用javascript将模型更新为新的模型值。以便视图显示最新的模型值 那能做到吗 谢谢,我们可以将整个模型传递给javascript asp.net mvc吗,javascript,asp.net-mvc-2,Javascript,Asp.net Mvc 2,我有一个问题,在表单提交的javascript调用中,模型从控制器得到更新,但它没有在视图中更新。我正在考虑用javascript将模型更新为新的模型值。以便视图显示最新的模型值 那能做到吗 谢谢, michael您的问题非常不清楚,而且您没有提供任何源代码,这使得问题更加不清楚。根据您可能发布的各种注释,我假设您正在尝试更新POST操作中的某些模型值,而不将其从模型状态中删除,并且当再次呈现相同视图时,将显示旧值 因此,我假设您有一个视图模型,它看起来与此类似: public class My
michael您的问题非常不清楚,而且您没有提供任何源代码,这使得问题更加不清楚。根据您可能发布的各种注释,我假设您正在尝试更新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" />
<% } %>
x、 SomeValue)%%>
x、 SomeValue)%%>
附件
让表单通过AJAX提交,让控制器操作返回一个新视图,不是更干净吗,然后在请求回调时更新DOM?控制器返回到具有更新模型的同一视图,在上载文件时,我无法通过ajax提交。按下提交按钮后,模型没有更新,它与以前的模型相同,我再次来到该页面,然后更新模型。所以我想用javascript更新同一页面上的模型。那能做到吗?我不太明白!您说您通过控制器更新模型,然后返回具有更新模型的相同视图。你是如何提交表格的?HTTP响应发生了什么?darin感谢您所做的一切,我真的非常感谢您。但是我还没有展示源代码bcoz,这个问题是一个局部问题。现在我明白了,上面的操作会很好,但是在我的场景中,我有两个表单标记,所以如果我认为你曾经添加到第一个表单中的内容可以保留在同一页面中,我会将这个表单作为document.body.appendChild(iframe)指向一个iframe;getElementById(form_id).target=iFrame_id;因此,iframe在从控制器返回后不会更新模型数据。