2011-11-21 18 views
5

ASP.NET MVC3'teki Ajax.BeginForm yardımcı programını kullanarak formda yeni değerlerle değiştiren bir form göndermek için kullanıyorum sunucuda ayarlayın. Ancak Html.TextBoxFor gibi yardımcıları kullandığımda, sunucudaki modele eklediğim değerleri değil, gönderilen değerleri alıyorum.ASP.NET MVC 3 Ajax.BeginForm ve Html.TextBoxFor sunucuda yapılan değişiklikleri yansıtmıyor

Örneğin; İşlemimde 4'e SomeValue ayarlayıp bir metin kutusunda gösteriyorum. Değeri 8 olarak değiştiririm, gönderim gönderir ve metin kutusundaki değerin 4'e geri dönmesini beklerdim, fakat bir nedenden ötürü 8 kalır. Ancak, Html yardımcılarını kullanmadan SomeValue çıkarırsam 4. derler. ne oluyor?

Benim denetleyicisi:

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; } 
} 

My View (Benim düzeni sayfasında tüm gerekli javascript yok olduğunu lütfen):

<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> 

cevap

6

sen

ModelState.Clear() 

kullanabilirsiniz html yardımcılarının değiştirilmiş modelinizi kullanmasını sağlamak için denetleyici yönteminiz. Aksi halde

göz at gönderme formundan değerleri kullanın: Eğer yazı sonra yapılan değişiklikleri yansıtacak şekilde

ModelState.Clear(); 

yapmanız gereken sizin POST yönteminde Asp.net MVC ModelState.Clear