我有一个对象数组.对象具有一个名为的属性userName.有没有办法将userName值连接成逗号分隔的字符串?我假设我可以使用该join功能,但我能想到的唯一方法需要两个步骤.
var userNames: string[];
objectArr.forEach((o) => { userNames.push(o.userName); });
var userNamesJoined = userNames.join(",");
Run Code Online (Sandbox Code Playgroud)
有没有办法在一行代码中完成它?
我正在将KnockoutJS引入现有应用程序.我的计划是修改/利用我们已经创建的现有部分视图,并使用Knockout的声明属性将它们绑定到JS视图模型.当我对一个动作进行AJAX调用时,理想情况下我希望该动作返回部分视图的HTML和JSON对象.然后我可以用HTML填充div,将JSON转换为Knockout对象并将其绑定到HTML.但我无法弄清楚如何从行动中返回两者.
我需要完整的视图模型,因为我将更新它并最终将其发送回服务器.
我想过让动作返回局部视图(已绑定到模型),并在局部视图中,包含javascript以将.Net模型转换为Knockout对象.但是我觉得像这样分散JS是混乱而且不可维护的.我宁愿接近原来的ajax电话.
我想另一种选择是进行两次动作调用.一个用于JSON,另一个用于局部视图.但必须有一个更光滑的方式.
关于如何最好地做到这一点的任何想法?
转换web.config时,如何插入web.config节点作为父节点的第一个子节点?所以我有
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Foo" stopProcessing="true">
...
</rule>
<rule name="Bar" stopProcessing="true">
...
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我想插入另一条规则作为第一条规则.web.Release.config中的以下代码仅将其添加到最后.
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<rewrite>
<rules>
<rule name="Blah" stopProcessing="true" xdt:Transform="Insert">
...
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我正在使用KnockoutJS的映射插件将我的模型转换为Knockout对象.但是我在将大型json对象发送回服务器时遇到问题.我的ajax调用看起来像这样:
$.ajax({
url: "/home/DoStuff",
type: "POST",
data: JSON.stringify({ deal: ko.toJS(myObjectViewModel) }),
contentType: "application/json",
dataType: "json",
success: function (result) {
console.log(result);
},
error: function (xhr, status, message) {
console.log(xhr);
}
});
Run Code Online (Sandbox Code Playgroud)
执行此脚本永远不会命中DoStuff控制器中的操作.当我用Firebug检查时,POST就会继续旋转.在Firebug的Net选项卡中,它表示Post Body为159.9 KB,Total Sent为165.1 KB(包括标题).如果它被发送,为什么它没有在代码中击中我的断点?
但是,当我只发送一个属性myObjectViewModel,它发布很好,一切都很成功.因此,我认为问题在于发布的数据大小.所以我尝试增加maxJsonLength.
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"></jsonSerialization>
</webServices>
</scripting>
</system.web.extensions>
Run Code Online (Sandbox Code Playgroud)
这没有用.
还有什么我应该做的吗?
我正在尝试在MVC 3中实现全局未处理的异常日志记录.我已经设置了我的web.config,就像这样..
<customErrors mode="On" defaultRedirect="/error/">
<error statusCode="500" redirect="/error/http500"/>
<error statusCode="404" redirect="/error/http404"/>
</customErrors>
Run Code Online (Sandbox Code Playgroud)
当我触发控制器的异常时,它会按预期重定向到错误页面.问题是,当我Server.GetLastError()在Global.asax中使用时,异常总是如此
"The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:\r\n~/Views/deanslist/Error.aspx\r\n~/Views/deanslist/Error.ascx\r\n~/Views/Shared/Error.aspx\r\n~/Views/Shared/Error.ascx\r\n~/Views/deanslist/Error.cshtml\r\n~/Views/deanslist/Error.vbhtml\r\n~/Views/Shared/Error.cshtml\r\n~/Views/Shared/Error.vbhtml"
Run Code Online (Sandbox Code Playgroud)
我期待它提供抛出的实际异常.我究竟做错了什么?
我正在尝试使用.Net的Ajax.BeginForm来提交表单并获取对象列表.
@using (Ajax.BeginForm("ValidateEmployee", new AjaxOptions { OnBegin = "onBegin", OnSuccess = "onSucess", UpdateTargetId = "results"} )
Run Code Online (Sandbox Code Playgroud)
问题是,当我的控制器返回一个JsonResult并将我返回的列表转换为json时,永远不会调用OnSuccess回调,并且不会更新我的id为"results"的div.但是调用onBegin回调.控制器看起来像这样.
public JsonResult ValidateEmployee(Employee emp)
{
...
List<Role> roles = new Role();
foreach(var x in myCollection)
{
roles.Add(new Role { ID = x.ID, Name = x.Name });
}
return Json(roles);
}
Run Code Online (Sandbox Code Playgroud)
我已经确认Json(roles)将列表正确转换为有效的json.但我无法使用它,因为onSuccess永远不会运行.
奇怪的是,如果我不列表转换成JSON,就回到它作为.NET名单,这两个回调是碰我的元素,更新输出System.Collections.Generic.List'1 [Models.Role.所以它不是json,我没有办法使用数据.
那么为什么当我从控制器返回一个json对象时没有调用onSuccess?
我正在使用MVC 3,我正在引用jquery.unobtrusive-ajax.js.
谢谢你的帮助.
asp.net-mvc ×2
jquery ×2
json ×2
knockout.js ×2
asp.net ×1
javascript ×1
jsonresult ×1
xslt ×1