我正在添加一个工作的Kendo UI网格,允许它根据从文本框传入的id进行更新.我从ajax调用我的控制器,一切都按预期工作,直到我尝试kendo.data.DataSource()在ajax成功中创建for my grid.该result预期我把它分配给数据源的外貌,但任何事情似乎并没有工作.数据没有显示任何内容,并且网格显示为空.
网格预期的模型与我的控制器中的模型匹配.我看过其他问题和剑道ui文档,但我似乎无法弄清楚我做错了什么...任何帮助将不胜感激.
阿贾克斯:
$.ajax({
type: "POST",
url: '@Url.Action("Search")',
data: JSON.stringify({ id: id }),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
var grid = $("#Grid").data("kendoGrid");
var data = new kendo.data.DataSource(result);
grid.dataSource.data(data);
grid.refresh();
}
});
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult Search([DataSourceRequest]DataSourceRequest request, string id)
{
IEnumerable<SearchModel> data = GetData(id);
return Json(data.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud) 我在我的主父视图中有一个局部视图,其中包含我需要更新的表.它在局部视图中的原因是我可以在不重新加载主视图的情况下更新它.我不能在这里使用表单因为我在父视图中的一个表单.
局部视图:
@model IList<ItemViewModel>
@Html.ActionLink("Add Item", "AddItem", "Home", new { model = Model }, null)
<table>
...
@{foreach (var item in Model)
//add table row
}
....
</table>
Run Code Online (Sandbox Code Playgroud)
控制器:
public ActionResult AddItem(IList<ItemViewModel> model)
{
model.Add(...);
return View("_PartialView", model);
//also tried return PartialView(...)
}
Run Code Online (Sandbox Code Playgroud)
一切都适用于大部分但是当我的ActionResult返回时,我的父视图消失了,我看到的只是部分.我想当我返回局部视图时这是有道理的,但我如何在父视图中刷新它?
我的 MVC 4 应用程序中有以下 Kendo UI DropDownListFor,并且在提交时收到值不能为空错误。
@Html.Kendo()
.DropDownListFor(m => m.JobTitle)
.BindTo(ViewData["Jobs"] as SelectList)
Run Code Online (Sandbox Code Playgroud)
通常,我会使用视图模型来处理绑定,但在这种情况下,这不是一个选项,因此我尝试使用 ViewData 列表填充我的列表。该列表可以很好地加载到下拉列表中,但它没有将我的选择与 JobTitle 值关联起来。任何对此的建议将不胜感激,因为我已经尝试了我能想到的一切。
asp.net asp.net-mvc asp.net-mvc-4 kendo-ui kendo-asp.net-mvc
我试图建立一个像下面这样的字符串,我注意到它在使用后被切断了?运算符,无论前一个值是否为null.
"Some Text" + System.Environment.NewLine +
varOne.ToString() ?? string.Empty + System.Environment.NewLine +
varTwo.ToString()...
Run Code Online (Sandbox Code Playgroud)
字符串包含的所有内容(无论值是多少)都取决于varOne(Some Text + newline + varOne),除非我删除?? 运营商.看了一下后,我发现这不是首选的方法,我应该使用一个字符串构建器,但我只是好奇为什么会发生这种情况?
我正在使用System.Net.Mail.MailMessage该类生成一个简单的电子邮件,并使用StringBuilder.我正在循环string[]并尝试每次添加一个新行.我遇到的问题是我似乎每次都无法生成一个新行.我可以得到两个或没有.
我尝试过的:
foreach (var message in messages)
{
body.AppendLine(message);
}
foreach (var message in messages)
{
body.Append(message + "\n");
}
foreach (var message in messages)
{
body.Append(message + System.Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)
我也试过了string.Format().
对于上面的每个例子,我得到相同的结果.没有生成新行.
但是,当我尝试以下操作时,我得到了预期的结果.中间有空行的新行.
foreach (var message in messages)
{
body.AppendLine(message + System.Environment.NewLine);
}
Run Code Online (Sandbox Code Playgroud)
为什么要这样做,我该怎么办才能每次只获得一条新线?
更新:
所以我发现Outlook和可能的Gmail(没有测试过其他人)实际上是删除了一些换行而不是其他换行符.有谁知道他们为什么或如何确定要删除的内容?

我正在使用角度ui-sortable通过拖放来订购商品.正在排序的项目也附加了一个点击事件.在firefox中,丢弃其中一个项会触发click事件.在我测试的所有其他浏览器中,它没有.
这是一个简单的例子(检查控制台日志):
HTML
<div ng-app="app" ng-controller="ctrl as vm">
<div ui-sortable="vm.sortableOptions" ng-model="vm.items">
<div ng-repeat="item in vm.items">
<a href ng-click="vm.log()">
<div class="box"></div>
</a>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.box {
width: 100px;
height: 100px;
background: #ff0000;
margin: 8px;
}
Run Code Online (Sandbox Code Playgroud)
JS
angular.module('app', ['ui.sortable'])
.controller('ctrl', [function () {
var vm = this;
vm.sortableOptions = {
stop: function (e) {
}
}
vm.items = [
{},
{},
{},
{}
];
vm.log = function () {
console.log('clicked');
}
}]);
Run Code Online (Sandbox Code Playgroud)
我希望不会发生这种情况.调用Event.preventDefault()不会像我希望的那样工作(可能是因为它是一个角度点击事件).
我当然可以在停止回调中设置某种标志(它似乎总是在点击处理程序之前触发)但我更喜欢一个更清洁的解决方案,因为它可能会有点难以跟踪.