Это задано несколько раз, но я не могу найти удовлетворительный ответ. Я пробовал все предложения на подобные должности без каких-либо успехов.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-*"
Я действительно не знаю, что еще, чтобы попытаться получить обновленные значения размещены.
Вы, кажется, пытается добавить вашей модели в значениях маршрута. Это должно быть просто '@using (Ajax.BeginForm (« Тест », новый AjaxOptions() {...' –
Я оставил модель из нее сейчас, и я до сих пор ничего не написал. Проверял все связанные темы, а я действительно – Gerben
Протестировали ваш код (но добавили '@ Html.ValidationMessageFor (x => x.Prop1)' в представлении (так же для 'Prop2'), и он отлично работает. В методе post' model' содержит значения, введенные в текстовые поля. –