【问题标题】:DevExpress MVC Editors get value on ControllerDevExpress MVC 编辑器在控制器上获得价值
【发布时间】:2017-02-09 20:02:38
【问题描述】:

我在我的 razor cshtml 文件中声明了一个弹出控件,如下所示:

    @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")
...}

但是,在这种情况下,这将返回 null。从弹出控件中呈现的局部视图中的控件获取此值的正确方法是什么?

【问题讨论】:

    标签: c# asp.net-mvc razor devexpress


    【解决方案1】:

    通常,有必要将编辑器包装在表单容器中,以便在提交时传递整个表单的内容。然后,可以使用标准模型绑定机制检索所需编辑器的值。使用 DevExpress MVC 编辑器时,请确保 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 学习资源。

    【讨论】:

      【解决方案2】:

      我自己找到了答案,我的按钮导致触发 GET 方法而不是 POST。通过在我的保存按钮上将“UseSubmitBehavior”设置为 true,它开始触发 POST 功能并允许
      EditorExtension.GetValue&lt;string&gt;("txtReviewComment")

      获取值的行。

      【讨论】:

        猜你喜欢
        • 2010-10-12
        • 2012-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-04
        • 1970-01-01
        • 1970-01-01
        • 2015-02-14
        相关资源
        最近更新 更多