2

私は非常に単純なページを持っています。いくつかの devexpress テキストボックスと devexpress ボタンがあります。

これらのテキスト ボックスは、モデル内の特定のフィールドにバインドされています。

ボタンをクリックすると、アクションに飛び込み、アクションでモデルを確認すると、フィールドが空になります。私は当初、これを @Html.TextBoxFors と完全に連携させていました。Devexpress textboxs と textboxfors を追加すると、何も機能しません。

私はstackoverflowをレビューしましたが、解決策が見つかりませんでしたが、本質的に同じ同様の質問を見つけましたが、賞金を開始する必要がある場合は、自分の質問でそれを行いたいと思います。下のもの。:

MVC 3 DevExpress - コントローラーに返されたモデルが空です

また、devexpress の Web サイトを確認したところ、これが見つかりました。:

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();
            }
        }
4

1 に答える 1

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>
于 2013-01-11T21:22:11.843 に答える