-2

我是“ASP.NET MVC 的 Kendo UI”的新手,目前正在使用编辑器 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 的解决方案:

如果属性名称与编辑器名称不匹配,则无法将编辑器中的值传递给发布操作。编辑器名称用于文本区域名称,如果名称不同,ModelBinder 将无法关联该值。您可以使用 EditorFor 帮助程序并跳过 Name 方法来生成正确的名称:

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