【问题标题】:MVC DevExpress - Model Returned to Controller is EmptyMVC DevExpress - 返回到控制器的模型是空的
【发布时间】:2014-05-31 18:17:30
【问题描述】:

我有一个非常简单的页面。它有几个 devexpress 文本框和一个 devexpress 按钮。

这些文本框绑定到我的模型中的特定字段。

单击按钮后,它会跳转到我的操作,在查看我操作中的模型时,我的字段为空。我最初与@Html.TextBoxFors 完美配合。添加 Devexpress 文本框和 textboxfors 后,没有任何效果。

我已经查看了 stackoverflow 并没有找到解决方案,虽然我发现了一个类似的问题,基本上相同,但是如果我需要开始赏金,我宁愿在我自己的问题上做,就代码而言,我的问题非常与下面的非常相似。 :

MVC 3 DevExpress - Model Returned to Controller is Empty

我还查看了 devexpress 的网站并找到了这个。 :

http://www.devexpress.com/Support/Center/Example/Details/E2886

以上基本上是如何正确执行此操作的演示。我的项目和其他stackoverflow用户的代码和这个差不多。

我假设其他人也遇到过这个问题。我已经尝试让这个工作好几个星期了,但仍然没有运气。任何想法都非常感谢。

代码

查看

@inherits System.Web.Mvc.WebViewPage<MyModel>
@using DevExpress.Web.ASPxEditors;

@using (Html.BeginForm("MyModelSave", "Home", FormMethod.Post))
{
    <div>
        @Html.DevExpress().TextBox(settings =>
                   {
                       settings.Name = "txtId";
                       settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
                   }).Bind(Model.Id).GetHtml()
    </div>
    <div>
        @Html.DevExpress().TextBox(settings =>
                   {
                       settings.Name = "txtName";
                       settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
                   }).Bind(Model.Name).GetHtml()
    </div>
    <div>
        @Html.DevExpress().Button(s =>
                     {
                        s.Name = "btnSave";
                        s.Images.Image.Url = "~/Images/save.png";
                        s.Text = string.Empty;
                        s.ToolTip = "Save";
                            s.UseSubmitBehavior = true;
                        }).GetHtml()
    </div>
}   

动作

[HttpPost]
        public ActionResult MyModelSave([ModelBinder(typeof(DevExpressEditorsBinder))]MyModel modelTest)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }
            else
            {
                //Work with model
                return View();
            }
        }

【问题讨论】:

  • 你能发布你的代码吗?没有它,就很难帮助您解决问题。
  • 已添加,但正如我所说,代码与我提供的链接基本相同。我已经尝试了大约 45 种我在这里发布的内容,但都没有成功。
  • 您的模型属性名称和文本框设置名称应该匹配。尝试写:settings.Name = "Id";settings.Name = "Name"; 而不是 txtId 和 txtName
  • 纯粹的天才你会把这个作为答案,所以我可以标记你吗?我是 MVC 的新手,你刚刚救了我的命。

标签: asp.net-mvc asp.net-mvc-4 devexpress


【解决方案1】:

对于模型绑定,您的 html 输入(文本框)名称和模型属性名称应该匹配。

所以您的DevExpress().TextBoxs 需要与您的模型属性具有相同的settings.Names:

<div>
    @Html.DevExpress().TextBox(settings =>
           {
               settings.Name = "Id";
               settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
           }).Bind(Model.Id).GetHtml()
</div>
<div>
    @Html.DevExpress().TextBox(settings =>
           {
               settings.Name = "Name";
               settings.Width = System.Web.UI.WebControls.Unit.Percentage(100);
           }).Bind(Model.Name).GetHtml()
</div>

【讨论】:

    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2011-06-10
    相关资源
    最近更新 更多