我在我的mvc項目中有一個kendo網格(內聯模式),並且我通過mvc初始化網格。 問題是,當我添加一個新的行時,它得到一個0 ID,它的髒屬性設置爲true。 如何刷新添加的項目併爲其設置正確的ID?Kendo Grid不爲我處理髒物。爲什麼?
這是我的劍道網:
@(Html.Kendo().Grid<IranHost.Tools.Services.Core.DataModel.Site>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Domain).Width(250).Title("دامین");
columns.Command(command => { command.Edit().Text("ویرایش").UpdateText("ذخیره").CancelText("لغو"); command.Destroy().Text("حذف"); });
})
.ToolBar(toolbar => toolbar.Create().Text("افزودن دامین جدید").HtmlAttributes(new { @class = "add-button" }))
.Editable(editable => { editable.Mode(GridEditMode.InLine); })
.Sortable()
.Pageable()
.Scrollable()
.Events(action => { action.Edit("gridEdit"); action.Save("gridSave"); action.SaveChanges("gridSaveChanges"); })
.DataSource(dataSource => dataSource
.Ajax()
.Events(events => { events.Error("result_handler"); })
.Model(model => model.Id(p => p.Id))
.Create(create => create.Action("AddDomain", "Service", new { customerID = ViewBag.CustomerId }))
.Read(read => read.Action("GetDomainListForGrid", "Service", new { customerID = ViewBag.CustomerId }))
.Update(update => update.Action("EditDomain", "Service"))
.Destroy(destroy => destroy.Action("DeleteDomain", "Service"))
)
)
,這就是我在服務器端所做的:
public ActionResult AddDomain([DataSourceRequest] DataSourceRequest request, DataModel.Site site)
{
if (ModelState.IsValid)
{
var pattern = "([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w\\.-]*)";
if (!Regex.IsMatch(site.Domain, pattern))
{
//TODO: Must be added in the framework.
ModelState.AddModelError("ERROR", "Wrong URL Format!");
return Json(ModelState.ToDataSourceResult(), JsonRequestBehavior.AllowGet);
}
var siteContext = new Biz.Site(DataContext);
siteContext.Add(site);
DataContext.SaveChanges();
ModelState.AddModelError("ADDED", site.id);
return Json(new[] { site }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
}
return new HttpStatusCodeResult(403);
}
但它仍然無法正常工作!
很高興你明白了。現在,我看到你的服務器端代碼,它看起來很可疑。你可能會嘗試的,因爲你在捏,是添加一個額外的領域到你的模型,把你的成功消息在這個領域。當視圖加載並通知用戶(通過kendo彈出窗口很好)時,請選中此字段。我這樣做是爲了在沒有模型狀態的情況下將錯誤傳遞給頁面。如果你做了這樣的事情,你將能夠通知用戶它已被'添加',而不會像現在這樣破壞ModelState。爲什麼site.Domain = site.Domain? –
:D site.Domain = site.Domain! 其實它在編輯這篇文章後被刪除。這是離開那裏沒有任何地方的事情之一! :D –
是的。感謝您的建議! –