-2

「Kendo UI for ASP.NET MVC」は初めてで、現在、エディター UI ウィジェットを使用してデータベースからデータを取得し、変更をデータベースに保存しています。エディターは、コントローラーから返されたモデル データを正しく表示します。

ただし、エディターに変更を加えた後、エディターのコンテンツがコントローラーの HttpPost メソッドに渡されないため、必要な検証メッセージが表示されます。

エディターが入力を基になるモデルに渡さない理由についてのアイデアはありますか??

ここにいくつかのコードがあります:

**@* Create Customer View *@**

@model KendoTest.Models.Customer
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)

    <fieldset>
        <div class="editor-label">
            @Html.LabelFor(model => model.CustomerName)
            @Html.EditorFor(model => model.CustomerName)
            @Html.ValidationMessageFor(model => model.CustomerName)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Notes)
            @(Html.Kendo().EditorFor(model => model.Notes).Name("NotesEditor").HtmlAttributes(new { style = "width:400px" }))
            @Html.ValidationMessageFor(model => model.Notes)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}



**// Customer Controller**

    public class CustomerController : Controller
    {
        private KendoTestDbContext db = new KendoTestDbContext();

        //
        // GET: /Customer/Create

        [HttpGet]
        public ActionResult Create()
        {
            return View();
        }

        //
        // POST: /Customer/Create

        [HttpPost]
        public ActionResult Create(Customer customer)
        {
            if (ModelState.IsValid)
            {
                db.Customers.Add(customer);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(customer);
        }

    }
4

1 に答える 1

1

Telerik チームの Daniel による解決策は次のとおりです。

プロパティ名がエディター名と一致しない場合、エディターの値を post アクションに渡すことができませんでした。Editor Name は textarea 名に使用され、名前が異なる場合、ModelBinder は値を関連付けることができません。EditorFor ヘルパーを使用し、Name メソッドをスキップして正しい名前を生成できます。

@Html.Kendo().EditorFor(model => model.PropertyName)
于 2012-12-03T18:41:14.407 に答える