Tag: telerik mvc

如何将静态文本设置为JsonResult?

我发现了以下代码示例(来自Telerik ),我正在努力理解。 我需要做的是以某种方式将静态文本设置为JsonResult(egText =“Abc”和Value =“123”) public ActionResult _AjaxLoading(string text) { Thread.Sleep(1000); using ( var nw = new NorthwindDataContext() ) { var products = nw.Products.AsQueryable(); if ( text.HasValue() ) { products = products.Where((p) => p.ProductName.StartsWith(text)); } return new JsonResult { Data = new SelectList(products.ToList(), “ProductID”, “ProductName”) }; } }

使用EntityObjects进行Ajax绑定的Telerik MVC Grid获取循环引用exception

我一直在使用Telerik MVC Grid已经有一段时间了,它是一个很棒的控件,然而,一个令人讨厌的事情仍然表现在与使用Ajax绑定到从Entity Framework创建和返回的对象的网格相关。 实体对象具有循环引用,当您从Ajax回调返回IEnumerable时,如果存在循环引用,则会从JavascriptSerializer生成exception。 发生这种情况是因为MVC Grid使用的是JsonResult,后者又使用不支持序列化循环引用的JavaScriptSerializer。 我对此问题的解决方案是使用LINQ创建没有相关实体的视图对象。 这适用于所有情况,但需要创建新对象以及将数据复制到实体对象或从实体对象复制到这些视图对象。 没有很多工作,但这是工作。 我终于想出了如何一般地使网格没有序列化循环引用(忽略它们),我想为大众分享我的解决方案,因为我认为它是通用的,并且很好地插入环境。 该解决方案有几个部分 使用自定义序列化程序交换默认网格序列化程序 安装Newtonsoft提供的Json.Net插件(这是一个很棒的库) 使用Json.Net实现网格序列化器 修改Model.tt文件以在导航属性前插入[JsonIgnore]属性 覆盖Json.Net的DefaultContractResolver并查找_entityWrapper属性名称以确保它也被忽略(由poco类或entity framework注入包装器) 所有这些步骤本身都很容易,但如果没有所有这些步骤,你就无法利用这种技术。 一旦正确实现,我现在可以轻松地将任何entity framework对象直接发送到客户端,而无需创建新的View对象。 我不推荐每个对象,但有时它是最好的选择。 同样重要的是要注意,任何相关的entires都不在客户端,因此不要使用它们。 以下是所需的步骤 在您的应用程序中的某个位置创建以下类。 此类是网格用于获取json结果的工厂对象。 这将很快添加到global.asax文件中的telerik库中。 public class CustomGridActionResultFactory : IGridActionResultFactory { public System.Web.Mvc.ActionResult Create(object model) { //return a custom JSON result which will use the Json.Net library return new CustomJsonResult { Data = […]

从MVC控制器中的JsonResult方法返回JSON

我试图在测试ASP.NET MVC3应用程序中填充ComboBox(Telerik RAD COmboBox)。 我在我的ASPX页面上定义了ComboBox,在控制器中我定义了返回JsonResult的动作调用。 我遇到的问题是我使用的Web服务已经将结果集作为JSON字符串返回。 如何直接从Webservice传递响应。 以下是代码片段:ASPX页面: b .Ajax() .Select(“GetCALMdata”,”Common”) ) .Render(); %> 控制器:称为CommomController public JsonResult GetCALMdata() { CALMwsP.wsCALMSoapClient wsC = new CALMwsP.wsCALMSoapClient(“wsCALMSoap”); string resultset = wsC.GetRefTables(“P_1”, “P_2”, “P_3”, “P_4”); return ??; — I want to return resultset which is already formatted. }

如何在Kendo UI MVC中设置并获取网格中下拉列表的值?

我在MVC3中使用KendoUI MVC。 我设法在网格列中得到一个下拉列表。 但我不清楚如何设置所选值,当我保存它时不保存我选择的值。 网格 @using Perseus.Areas.Communication.Models @using Perseus.Common.BusinessEntities; @(Html.Kendo().Grid() .Name(“grid”) .Columns(colums => { colums.Bound(o => o.communication_type_id) .EditorTemplateName(“_communicationDropDown”) .ClientTemplate(“#: communication_type #”) .Title(“Type”) .Width(180); colums.Bound(o => o.sequence).Width(180); colums.Bound(o => o.remarks); colums.Command(command => command.Edit()).Width(50); }) .Pageable() .Sortable() .Filterable() .Groupable() .Editable(edit => edit.Mode(GridEditMode.InLine)) .DataSource(dataSource => dataSource .Ajax() .ServerOperation(false) .Model(model => model.Id(o => o.communication_id)) .Read(read => read.Action(“AjaxBinding”, “Communication”, new […]