我有一个非常简单的页面。它有一些devexpress文本框和一个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();
}
}
答案 0 :(得分:1)
对于模型绑定,您的html输入(TextBox)名称和模型属性名称应匹配。
因此,您的DevExpress().TextBox
需要与模型属性具有相同的settings.Name
:
<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>