Asp.net mvc 4 编辑器UI小部件未将输入传递到模型

Asp.net mvc 4 编辑器UI小部件未将输入传递到模型,asp.net-mvc-4,kendo-ui,Asp.net Mvc 4,Kendo Ui,我是“ASP.NET MVC的剑道UI”新手,目前正在使用编辑器UI小部件从数据库获取数据并保存对数据库的更改。编辑器正确显示控制器返回的模型数据 但是,在对编辑器进行更改后,编辑器中的内容不会传递给控制器的HttpPost方法,因此会显示所需的验证消息 关于编辑器为什么不将输入传递给基础模型,有什么想法吗 下面是一些代码: **@* Create Customer View *@** @model KendoTest.Models.Customer @{ Layout = "~/Vi

我是“ASP.NET MVC的剑道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);
        }

    }
****创建客户视图*@**
@model KendoTest.Models.Customer
@{
Layout=“~/Views/Shared/_Layout.cshtml”;
}
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
@LabelFor(model=>model.CustomerName)
@EditorFor(model=>model.CustomerName)
@Html.ValidationMessageFor(model=>model.CustomerName)
@LabelFor(model=>model.Notes)
@(Html.Kendo().EditorFor(model=>model.Notes).Name(“NotesEditor”).HtmlAttributes(新的{style=“width:400px”}))
@Html.ValidationMessageFor(model=>model.Notes)

} **//客户控制员** 公共类CustomerController:控制器 { 私有KendoTestDbContext db=new KendoTestDbContext(); // //获取:/Customer/Create [HttpGet] 公共操作结果创建() { 返回视图(); } // //POST:/Customer/Create [HttpPost] 公共行动结果创建(客户) { if(ModelState.IsValid) { db.Customers.Add(客户); db.SaveChanges(); 返回操作(“索引”); } 返回视图(客户); } }
以下是Telerik团队Daniel的解决方案:

如果属性名称与编辑器名称不匹配,则无法将编辑器中的值传递给post操作。编辑器名称用于textarea名称,如果名称不同,ModelBinder将无法关联该值。您可以使用EditorFor helper并跳过Name方法来生成正确的名称:

@Html.Kendo().EditorFor(model => model.PropertyName)

分享一些视图的代码,分享一些控制器的代码,分享通过fiddler或firebug/devtools发布的内容。这个回答对我很有帮助。非常感谢。我没有意识到编辑器的对象名称应该是相同的