Я пытаюсь отправить модель контроллеру с помощью вызова Ajax. Проблема в том, что в контроллере все свойства представления равны нулю.Передача модели из представления в контроллер с использованием вызова Ajax
Мои ViewModel является:
public class ActivityDetailsViewModel
{
public ActivityDto Activity { get; set; }
public string ClientName { get; set; }
public string ProjectName { get; set; }
public string Parent { get; set; }
public int? ParentId { get; set; }
public int? ProjectId { get; set; }
public bool UpdateFinancialDataRight { get; set; }
public int? Level { get; set; }
public bool HasViewFinancialDataRight
{
get
{
return HttpContext.Current.User.IsInRole(UserRole.ViewFinancialData) ||
HttpContext.Current.User.IsInRole(UserRole.UpdateActivityFinancialData);
}
}
public bool HasUpdateFinancialDataRight
{
get
{
return HttpContext.Current.User.IsInRole(UserRole.UpdateActivityFinancialData);
}
}
public bool IsInEdit { get; set; }
public ActivityDetailsViewModel()
{
}
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public ActivityDetailsViewModel(ActivityDto activity,int?parentId,int?projectId, string clientName, string projectName, string parent, bool updateFinancialDataRight,int? level,bool isInEdit)
{
this.Activity = activity;
this.ClientName = clientName;
this.ProjectName = projectName;
this.Parent = parent;
this.ParentId = parentId;
this.ProjectId = projectId;
this.Level = level;
this.IsInEdit = isInEdit;
StartDate = Utils.DateUtils.IntToDate(activity.StartDate);
EndDate = Utils.DateUtils.IntToDate(activity.EndDate);
UpdateFinancialDataRight = updateFinancialDataRight;
}
}
На мой взгляд, я следующее:
using (Ajax.BeginForm("Save", "Activities", new { activityId = @Model.Activity.Id }, new AjaxOptions() { OnBegin = "beforeSaving('" + @Model.Activity.Id + "')", OnSuccess = "handleSuccess" }))
{
<input id="btnRun" type="submit" value="submit" />
@Html.TextBoxFor(m => m.ParentId, new { @class = "hiddenFiled" })
@Html.TextBoxFor(m => m.ProjectId, new { @class = "hiddenFiled" })
@Html.TextBoxFor(m => m.Level, new { @class = "hiddenFiled" })
......... }
Аякса вызова:
$("#btnRun").click(function (e) {
debugger;
e.preventDefault();
var check = '@Html.Raw(Json.Encode(Model))';
$.ajax({
url: 'Activities/Save',
type: 'POST',
data: JSON.stringify(check),
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data);
}
});
});
и в контроллере:
[HttpPost]
public ActionResult Save(ActivityDetailsViewModel view)
{
return PartialView("ActivitiesDetailsWindow", view);
}
Вы должны создать ViewModels в интерфейсе. –
, почему вам нужно отправить его по вызову ajax, когда ваша страница о получении отправки и вы установили действие контроллера HttpPost', будут иметь ваши значения, если вы прошли ViewModel в действии контроллера. Что именно вы хотите достичь? Пожалуйста, дополните. – Rohit416
Перед отправкой контроллеру, если свойство вида было изменено, у меня есть всплывающее окно (всплывающее окно с да/нет), и я хотел бы установить переменную с результатом всплывающего окна – user3024936