[Authorize(Roles = ("Administrator"))] [ValidateAntiForgeryToken] public async Task<ActionResult> InsClienti(ClientiVM value) { log4net.Config.XmlConfigurator.Configure(); log.Info("Inizio esecuzione InsClienti(ClientiVM value)"); List<ClientiVM> model = new List<ClientiVM>(); try { ModelState.Remove("value.IDUtente"); if (ModelState.IsValid) { Utente cliente = new Utente() { CF = value.CF, Codice = value.Codice, Cognome = value.Cognome, Deleted = value.Deleted, Email = value.Email, EmailRegistrazione = value.EmailRegistrazione, EmailRegistrazioneInviata = value.EmailRegistrazioneInviata, IDRuolo = value.IDRuolo, IDUtente = Guid.NewGuid(), Indirizzo = value.Indirizzo, Nome = value.Nome, Password = Crypto.HashPassword(value.Password), PIVA = value.PIVA, RagioneSociale = value.RagioneSociale, Referente = value.Referente, Telefono = value.Telefono }; if (await _utenteRepository.Exist(cliente)) { HttpContext.Response.AddHeader("Exception", Resources.Utenti.UtenteGiaPresente); Response.StatusCode = 412; } else { if (await _utenteRepository.InsUtente(cliente) != 1) { HttpContext.Response.AddHeader("Exception", Resources.Common.ErroreTrasmissione); Response.StatusCode = 412; } else { if (cliente.EmailRegistrazione) { SendEmailNewCustomer(cliente); cliente.EmailRegistrazioneInviata = true; await _utenteRepository.UpdUtente(cliente); } } } model = await LoadClienti(); } else { var message = string.Join(" | ", ModelState.Values.SelectMany(v => v.Errors).Select(e => e.ErrorMessage)); HttpContext.Response.AddHeader("Exception", Server.HtmlEncode(message)); Response.StatusCode = 412; } log.Info("Fine esecuzione InsClienti(ClientiVM value)"); } catch (Exception ex) { log.Error(string.Format("Errore:{0}", ex.InnerException == null ? ex.Message : ex.InnerException.Message)); throw ex; } return Json(model, JsonRequestBehavior.AllowGet); }
Unfortunately the error also occurs on another view with a simple grid without a dropdown: SCRIPT5007: Unable to get property 'trim' of undefined or null reference
@(Html.EJ().Grid<ServiziVM>("ResultGrid").Datasource(ds => ds.Json(Model).InsertURL(Url.Action("InsServizi", "Servizi")).RemoveURL(Url.Action("DelServizi","Servizi")).UpdateURL(Url.Action("UpdServizi","Servizi")).Adaptor(AdaptorType.RemoteSaveAdaptor)) .Columns(col => { col.Field("IDServizio").Visible(false).IsPrimaryKey(true).Add(); col.Field("NomeServizio").Add(); col.Field("DescrizioneServizio").Add(); col.Field("Deleted").DisplayAsCheckbox().Add(); }) .Locale(CultureInfo.CurrentCulture.TextInfo.CultureName).IsResponsive(true).EnableResponsiveRow(true).AllowPaging().AllowSorting().AllowFiltering() .EditSettings(edit => { edit.AllowAdding().AllowDeleting().AllowEditing().EditMode(EditMode.DialogTemplate).DialogEditorTemplateID("#ServiziTemplate"); }) .ToolbarSettings(tb => tb.ShowToolbar().ToolbarItems(tbi => { tbi.AddTool(ToolBarItems.Add); tbi.AddTool(ToolBarItems.Delete); tbi.AddTool(ToolBarItems.ExcelExport); tbi.AddTool(ToolBarItems.PdfExport); tbi.AddTool(ToolBarItems.PrintGrid); })).Mappers(m => m.ExportToExcelAction(Url.Action("ExportServiziExcel")).ExportToPdfAction(Url.Action("ExportServiziPDF"))).ClientSideEvents(eve => eve.Load("Load").ActionComplete("Complete").ActionFailure("Failure")))
<script type="text/template" id="ServiziTemplate"> @Html.AntiForgeryToken() <input type="hidden" name="IDServizio" value="{{: IDServizio}}" /> <table cellspacing="10" class="griddialog"> <tr> <td style="text-align: right;"> <label>@PLV.Web.Resources.Servizi.NomeServiziolabel> td> <td style="text-align: left"> <input name="NomeServizio" value="{{: NomeServizio}}" class="input-lg" /> td> tr> <tr> <td style="text-align: right;"> <label>@PLV.Web.Resources.Servizi.DescrizioneServiziolabel> td> <td style="text-align: left"> <input name="DescrizioneServizio" value="{{: DescrizioneServizio}}" class="input-lg" /> td> tr> <tr> <td style="text-align: right;"> <label>@PLV.Web.Resources.Servizi.Eliminatolabel> td> <td style="text-align: left"> <input type="checkbox" name="Deleted" class="input-lg" value="{{:Deleted}}" /> td> tr> table> <hr /> script>
function Failure(args) { var str = ""; str = args.error.getResponseHeader('Exception'); $('#ErrorList').html(""); $('#ErrorList').html("" + str + "
"); $('#ErrorList').ejDialog("open"); $("#" + this._id + "_dialogEdit").ejDialog("close"); this.element.ejWaitingPopup("hide"); } function Complete(args) { if (args.requestType == "beginedit" || args.requestType == "add") { if (args.requestType == "beginedit") { $("#" + this._id + "_dialogEdit").ejDialog("option", "title", "@PLV.Web.Resources.Clienti.DialogModificaCliente") } if (args.requestType == "add") { $("#" + this._id + "_dialogEdit").ejDialog("option", "title", "@PLV.Web.Resources.Clienti.DialogNuovoCliente") } } };
|
[Index.cshtml]
@(Html.EJ().Grid<object>("FlatGrid")
...
.Columns(col =>
{
col.Field("OrderID").HeaderText("Order ID").IsPrimaryKey(true).Width(90).Add();
...
...
})
.ClientSideEvents(eve => eve.ActionComplete("complete").ActionBegin("begin") )
)
<script type="text/javascript">
function begin(args) {
if (document.getElementsByClassName("e-addedrow").length && args.requestType == "save")
{
args.rowData.OrderID = "";
}
}
<script> |
return Json(value, JsonRequestBehavior.AllowGet);
var dmAdaptorUpdate = function (keyField, value, tableName) { var res = this.adaptor.update(this, keyField, value, tableName); return $.ajax($.extend({ beforeSend: ej.proxy(this._beforeSend, this) }, res)); } var dmAdaptorInsert = function (data, tableName) { var res = this.adaptor.insert(this, data, tableName); var deffer = $.Deferred(); $.ajax($.extend({ beforeSend: ej.proxy(this._beforeSend, this), success: ej.proxy(function (record, status, xhr, request) { record = function () { if (data.d) data = data.d; return data; }; deffer.resolveWith(this, [{ record: record, dataManager: this }]); }, this), error: function (e) { deffer.rejectWith(this, [{ error: e, dataManager: this }]); } }, res)); return deffer.promise(); } var adaptor = new ej.remoteSaveAdaptor().extend({ update: function (dm, keyField, value, tableName) { var token = value.__RequestVerificationToken; delete value['__RequestVerificationToken']; return { type: "POST", url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url, data: { __RequestVerificationToken: token, value: value, action:"update" } }; }, insert: function (dm, data, tableName) { var token = data.__RequestVerificationToken; delete data['__RequestVerificationToken']; return { type: "POST", url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url, data: { __RequestVerificationToken: token, value: data, action:"insert" } }; }, }) function Load(args) { this.model.dataSource.adaptor = new adaptor(); this.model.dataSource.update = dmAdaptorUpdate; this.model.dataSource.insert = dmAdaptorInsert; };
|
[GridFeatures.cshtml]
col.Field("CustomerID").HeaderText("Customer ID").IsPrimaryKey(true).IsIdentity(true).Width(90).Add();
[GridController.cs]
public ActionResult Insert(EditableOrder value)
{
value.CustomerID = "";
OrderRepository.Add(value);
return Json(value, JsonRequestBehavior.AllowGet);
} |
|
<script type="text/javascript">
...
var dmAdaptorInsert = function (data, tableName) {
var res = this.adaptor.insert(this, data, tableName);
...
success: ej.proxy(function (record, status, xhr, request) {
recordFn = function () {
if (record.d)
record = record.d;
return record;
};
deffer.resolveWith(this, [{ record: recordFn(), dataManager: this }]);
}, this),
...
}, res));
return deffer.promise();
}
...
</script>
|