2015-02-08 5 views
0

Это задано несколько раз, но я не могу найти удовлетворительный ответ. Я пробовал все предложения на подобные должности без каких-либо успехов.Ajax.BeginForm не опубликовать модель

Когда я использую Ajax.BeginForm, он не будет отправлять мои обновленные значения контроллеру. Это всегда по умолчанию ViewModel.

//Viewmodel 
public class MyViewModel 
{ 
     [Required] 
     public int Prop1 {get; set;} 
     [Required] 
     public int Prop2 {get; set;} 
} 

//Controller action 
[HttpPost] 
public ActionResult Test(MyViewModel model) 
{ 
     return PartialView("_partialview"); 
} 

//View 
@model Namespace.MyViewModel; 

@using(Ajax.BeginForm("Test", Model, new AjaxOptions() 
{ 
     UpdateTargetId = "divName", 
     HttpMethod = "POST", 
     InsertionMode = InsertionMode.Replace 
})) 
{ 
     @Html.TextBoxFor(x => x.Prop1) 
     @Html.TextBoxFor(x => x.Prop2) 
     <button type="submit">Submit</button> 
} 

Я пробовал несколько предложений, но опубликованное значение внутри контроллера всегда является MyViewModel по умолчанию без обновленных значений.

Я также пробовал различные варианты, чтобы получить возможность отправлять значения:

@using(Ajax.BeginForm("Test", new { model }, new AjaxOptions() 
@using(Ajax.BeginForm("Test", new { model = @Model }, new AjaxOptions() 
@using(Ajax.BeginForm("Test", new { model = 
    new Namespace.MyViewModel{ Prop1 = @Model.Prop1, Prop2 = @Model.Prop2 } }, new AjaxOptions() 

Подержанные связки:

"~/bundles/jqueryval" 
"~/Scripts/jquery.validate*", 
"~/Scripts/jquery.unobtrusive-*" 

Я действительно не знаю, что еще, чтобы попытаться получить обновленные значения размещены.

+1

Вы, кажется, пытается добавить вашей модели в значениях маршрута. Это должно быть просто '@using (Ajax.BeginForm (« Тест », новый AjaxOptions() {...' –

+0

Я оставил модель из нее сейчас, и я до сих пор ничего не написал. Проверял все связанные темы, а я действительно – Gerben

+0

Протестировали ваш код (но добавили '@ Html.ValidationMessageFor (x => x.Prop1)' в представлении (так же для 'Prop2'), и он отлично работает. В методе post' model' содержит значения, введенные в текстовые поля. –

ответ

0

Привет Я решить эту проблему с этим:

пут "идентификатор" в методе

public ActionResult StolenBadge(StolenDocViewModel id) 
{ 
    var obj = id 
    ... rest of code ... 
} 

в Ajax форма равна "ID = Модель"

@model WFAccess.Models.ViewModels.StolenDocViewModel 

    @using (Ajax.BeginForm("StolenBadge", "Requests", new AjaxOptions() 
    { 
     HttpMethod = "POST", 
     UpdateTargetId = "document-body", 
     InsertionMode = InsertionMode.Replace, 
     LoadingElementId = "document-loading", 
     OnBegin = "ClearBody('document-body')" 
    }, new { id = Model })) 
    { 
     ... rest of form ... 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^