2011-11-21 25 views
5

我在ASP.NET MVC3中使用Ajax.BeginForm幫助程序提交表單,該表單使用表單中的新值替換自己在服務器上設置。但是,當我使用像Html.TextBoxFor這樣的幫助器時,我得到了提交的值,而不是我在服務器上插入到模型中的值。ASP.NET MVC 3 Ajax.BeginForm和Html.TextBoxFor不反映在服務器上完成的更改

例如;我將SomeValue設置爲4,並將其顯示在文本框中。我將值更改爲8,點擊提交,並希望在文本框中將值更改回4,但出於某種原因,它保持爲8.但是,如果我輸出SomeValue而不使用Html幫助器,它會顯示4.任何人都有一些線索到底是怎麼回事?

我的控制器:

public ActionResult Index(HomeModel model) 
{ 
    model.SomeValue = 4; 
    if (Request.IsAjaxRequest()) 
     return PartialView(model); 
    return View(model); 
} 
public class HomeModel 
{ 
    public int? SomeValue { get; set; } 
} 

我的視圖(請沒有,我在我的佈局頁面中的所有所需的JavaScript):

<div id="ajaxtest"> 
@using(Ajax.BeginForm(new AjaxOptions{ InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "ajaxtest", HttpMethod = "Post" })) { 
    @Html.TextBoxFor(model => model.SomeValue) 
    <input type="submit" value="Update" /> 
} 
</div> 

回答

6

可以使用

ModelState.Clear() 

在您的控制器方法,使HTML助手使用您更改的模型。否則,他們使用的值從表單提交

看一看:Asp.net MVC ModelState.Clear

1

在POST方法,你需要做的

ModelState.Clear(); 

,以反映後後所做的更改

相關問題