2013-01-11 45 views
2

我有一个非常简单的页面。它有几个devexpress文本框和一个devexpress按钮。MVC DevExpress - 返回控制器的模型为空

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

点击该按钮后,它会在我的动作中查看模型后,发现我的动作,我的字段为空。我最初使用@ Html.TextBoxFors完美地工作。在Devexpress文本框和文本框中添加没有任何效果。

我已经查看了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(); 
      } 
     } 
+1

您可以发布您的代码?没有它,很难帮助你解决你的问题。 – nemesv

+0

已添加,但正如我所说的代码基本上与我提供的链接相同。我尝试了大约45个变化,我在这里发布了没有运气。 –

+1

您的模型属性名称和TextBox设置名称应匹配。尝试写:'settings.Name =“Id”;'和'settings.Name =“Name”;'而不是txtId和txtName – nemesv

回答

1

对于模型绑定你的HTML输入(文本框)的名字和你的模型属性名应该匹配。

所以你DevExpress().TextBox的需要具有相同settings.Name S作为你的模型属性:

<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>