BoldSignEasily embed eSignatures in your .NET applications. Free sandbox with native SDK available.
[index.cshtml]
@Html.AntiForgeryToken()
<ejs-grid id="Grid" allowPaging="true" load="onLoad" toolbar="@( new List<object>() {"Add","Edit","Delete","Update","Cancel"})">
<e-grid-editsettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Dialog"></e-grid-editsettings>
<e-data-manager url="/Index?handler=DataSource" adaptor="UrlAdaptor" insertUrl="/Index?handler=Insert" updateUrl="/Index?handler=Update" removeUrl="/Index?handler=Delete" ></e-data-manager>
<e-grid-pageSettings pageCount="5" pageSize="5"></e-grid-pageSettings>
<e-grid-columns>
. . . .
</e-grid-columns>
</ejs-grid>
<script>
function onLoad() {
this.dataSource.dataSource.headers = [{ 'XSRF-TOKEN': $("input:hidden[name='__RequestVerificationToken']").val() }];
}
</script> |
[index.cshtml]
<ejs-grid id="Grid" allowPaging="true" toolbar="@(new List<string>() {"Add", "Edit", "Update", "Delete" })" actionComplete="actionComplete">
<e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Dialog" template='#dialogtemplate'></e-grid-editSettings>
<e-data-manager url="/Home/UrlDataSource" adaptor="UrlAdaptor" insertUrl="/Home/Insert" updateUrl="/Home/Update" removeUrl="/Home/Remove"></e-data-manager>
<e-grid-columns>
. . . .
</e-grid-columns>
</ejs-grid>
[HomeController.cs]
public async Task<IActionResult> Update([FromBody]CRUDModel<Orders> model)
{
var data = order.Where(or => or.OrderID == model.Value.OrderID).FirstOrDefault();
if(data != null)
{
. . . .
}
return Json(model.Value);
} |
application/x-www-form-urlencoded; charset=UTF-8
since the ValidateAntiForgeryToken
will look for the token in the form encoded data. Please refer the below code example for more information.
[index.cshtml]
@Html.AntiForgeryToken()
<ejs-grid id="Grid" allowPaging="true" toolbar="@(new List<string>() {"Add", "Edit", "Update", "Delete" })" created="created" actionComplete="actionComplete">
<e-grid-editSettings allowAdding="true" allowDeleting="true" allowEditing="true" mode="Dialog" template='#dialogtemplate'></e-grid-editSettings>
<e-grid-columns>
. . . .
</e-grid-columns>
</ejs-grid>
<script id='dialogtemplate' type="text/x-template">
<div id="dialogTemp">
</div>
</script>
<script type="text/javascript">
function created() {
class CustomAdaptor extends ej.data.UrlAdaptor {
insert(dm, data, tableName) {
this.updateType = 'add';
return {
url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,
data: $.param({
//Added the anti-forgery token.
__RequestVerificationToken: document.getElementsByName("__RequestVerificationToken")[0].value,
value: data,
table: tableName,
action: 'insert'
}),
contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
};
}
update(dm, keyField, value, tableName) {
this.updateType = 'update';
this.updateKey = keyField;
return {
type: 'POST',
url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,
data: $.param({
//Added the anti-forgery token.
__RequestVerificationToken: document.getElementsByName("__RequestVerificationToken")[0].value,
value: value,
action: 'update',
keyColumn: keyField,
key: value[keyField],
table: tableName
}),
contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
};
}
remove(dm, keyField, value, tableName) {
new ej.data.JsonAdaptor.prototype.remove(dm, keyField, value);
return {
type: 'POST',
url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,
data: $.param({
//Added the anti-forgery token.
__RequestVerificationToken: document.getElementsByName("__RequestVerificationToken")[0].value,
key: value,
keyColumn: keyField,
table: tableName,
action: 'remove'
}),
contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
};
}
}
var grid = document.querySelector('#Grid').ej2_instances[0];
grid.dataSource = new ej.data.DataManager({
url: "/Home/UrlDatasource/",
insertUrl: "/Home/Insert/",
updateUrl: "/Home/Update",
removeUrl:"/Home/Remove",
adaptor: new CustomAdaptor()
});
}
[HomeController.cs]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Insert([FromBody]CRUDModel<Orders> value)
{
order.Insert(0, value.Value);
return Json(value.Value);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Update([FromBody]CRUDModel<Orders> model, string action, string __RequestVerificationToken)
{
var data = order.Where(or => or.OrderID == model.Value.OrderID).FirstOrDefault();
if(data != null)
{
data.OrderID = model.Value.OrderID;
data.CustomerID = model.Value.CustomerID;
data.EmployeeID = model.Value.EmployeeID;
data.OrderDate = model.Value.OrderDate;
data.ShipCity = model.Value.ShipCity;
data.Freight = model.Value.Freight;
}
return Json(model.Value);
}
[HttpPost]
[ValidateAntiForgeryToken]
public void Remove([FromBody]CRUDModel<Orders> Value)
{
var data = order.Where(or => or.OrderID.Equals(Value.Key)).FirstOrDefault();
order.Remove(data);
}
public class Orders
{
public Orders()
{
}
public Orders(long OrderId, string CustomerId, int EmployeeId, double Freight, DateTime OrderDate, string ShipCity, string ShipCountry)
{
this.OrderID = OrderId;
this.CustomerID = CustomerId;
this.EmployeeID = EmployeeId;
this.Freight = Freight;
this.OrderDate = OrderDate;
this.ShipCity = ShipCity;
this.ShipCountry = ShipCountry;
}
|