2011-07-01 29 views
0

我有一个关于JavaScript调用的形式提交,该模型被从控制器的最新一个问题,但它不是在视图中更新。我正在考虑将模型更新为JavaScript中的新模型值。使视图显示最新型号值 可以这样做吗?可我们通过整个模型的JavaScript asp.net的MVC

感谢, 迈克尔

+0

岂不将表单通过AJAX提交,让控制器操作返回一个新视图,并根据请求回调更新DOM,会更清晰? –

+0

控制器返回到相同的观点与更新的模式,因为我上传提交按下模型file.after我无法通过AJAX提交没有更新是一样的前代车型再一次我来那一页,然后该模型已更新。所以我想用javascript来更新同一页面上的模型。可以这样做吗? – michael

+0

我不知道我明白!你说你通过控制器更新模型,然后用更新后的模型返回相同的视图。你如何提交表格? HTTP响应发生了什么? –

回答

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" /> 
<% } %> 
+0

达林因为你已经完成了,我真的很感谢你。但我还没有表现出源代码bcoz问题是一个局部问题。现在我想通了,和上面将正常工作,但在我的情况我有两个表单标签,如果我觉得什么都u必须加入到第一班留在同一页,我将这个表单作为document.body.appendChild(iframe)定位到iframe; 的document.getElementById(form_id).TARGET = iFrame_id;因此iframe在从控制器返回后不更新模型数据。 – michael