2017-02-09 12 views
0

У меня есть popupcontrol объявленного в моем файле cshtml бритвы следующим образом:DevExpress MVC редактора получают значение на контроллере

@Html.DevExpress().PopupControl(settings => 
{ 
settings.Name = "popSendBackReview"; 
settings.HeaderText = "Send Review Back to Scheduler"; 
settings.AllowResize = false; 
settings.ShowHeader = true; 
settings.ShowOnPageLoad = false; 
settings.AllowDragging = true; 
settings.CloseAction = CloseAction.CloseButton; 
settings.CloseOnEscape = false; 
settings.Modal = true; 
settings.PopupElementID = "popSendBackReview"; 
settings.AutoUpdatePosition = true; 
settings.PopupHorizontalAlign = PopupHorizontalAlign.WindowCenter; 
settings.PopupVerticalAlign = PopupVerticalAlign.WindowCenter; 
settings.Height = 280; 
settings.Width = 450; 

settings.SetContent(() => 
{ 
    Html.RenderPartial("_SendBackReviewPanel"); 
}); 
}).GetHtml() 

Частичный вид содержит окно и кнопку памятки, которая вызывает действие:

@Html.DevExpress().Memo(settings => 
{ 
settings.Width = 300; 
settings.Height = 150; 
settings.Style.Add("margin-bottom", "10px"); 
settings.Name = "txtReviewComment"; 
settings.Properties.ValidationSettings.RequiredField.IsRequired = true; 
settings.Properties.ValidationSettings.RequiredField.ErrorText = "A Review Comment is Required."; 
settings.Properties.ValidationSettings.ErrorDisplayMode = ErrorDisplayMode.Text; 
settings.Properties.ValidationSettings.ErrorTextPosition = ErrorTextPosition.Bottom; 
settings.Properties.ValidationSettings.Display = Display.Dynamic; 
settings.Properties.ValidationSettings.ValidationGroup = "Review"; 
}).GetHtml() 

@Html.DevExpress().Button(settings => 
{ 
settings.Name = "btnSaveReview"; 
settings.Text = "Send Back for Scheduler Review"; 
settings.UseSubmitBehavior = false; 
settings.ValidationGroup = "Review"; 
settings.RouteValues = new { Controller = "Matter", Action = "ResolveReview", Pass = false, Comment = Model.CommentText }; 
}).GetHtml() 

@Html.DevExpress().Button(settings => 
{ 
settings.Name = "btnCancelReview"; 
settings.Text = "Cancel"; 
settings.UseSubmitBehavior = false; 
settings.ClientSideEvents.Click = "function(s,e) { popSendBackReview.Hide(); }"; 
}).GetHtml() 

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

public ActionResult ResolveReview(bool Pass) 
{ ... 
EditorExtension.GetValue<string>("txtReviewComment") 
...} 

Однако это возвращает нуль в этом сценарии. Каков правильный способ получить это значение из элемента управления в частичном представлении, отображаемом в popupcontrol?

ответ

0

Я нашел ответ самостоятельно, моя кнопка вызывала метод GET для запуска вместо POST. Устанавливая «UseSubmitBehavior» истину на моей кнопке сохранить, он начал стрелять функцию POST и позволяя линию
EditorExtension.GetValue<string>("txtReviewComment")

, чтобы получить значение.

1

В общем, необходимо обернуть редакторы в контейнер формы, чтобы передать содержимое всей формы на отправке. Затем можно получить требуемое значение редактора с помощью стандартного механизма моделирования Model Binding. При использовании DevExpress MVC Editors, убедитесь, что DevExpressEditorsBinder зарегистрирован:

@using(Html.BeginForm("ResolveReview")) { 
    @Html.DevExpress().Memo(settings => { 
     settings.Name = "txtReviewComment"; 
    }).GetHtml() 

    @Html.DevExpress().Button(settings => { 
     settings.Name = "btnSaveReview"; 
     settings.UseSubmitBehavior = true; 
    }).GetHtml() 
} 

public ActionResult ResolveReview(bool Pass) { 
    EditorExtension.GetValue<string>("txtReviewComment") 
} 

или

public ActionResult ResolveReview(string txtReviewComment) { ... } 

Проверьте MVC Data Editors - Model Binding and Editing учебный ресурс.