小编nth*_*xel的帖子

连接数组中对象的属性值

我有一个对象数组.对象具有一个名为的属性userName.有没有办法将userName值连接成逗号分隔的字符串?我假设我可以使用该join功能,但我能想到的唯一方法需要两个步骤.

var userNames: string[];
objectArr.forEach((o) => { userNames.push(o.userName); });
var userNamesJoined = userNames.join(",");
Run Code Online (Sandbox Code Playgroud)

有没有办法在一行代码中完成它?

javascript

15
推荐指数
1
解决办法
1万
查看次数

从ASP.NET MVC Action返回部分视图和JSON

我正在将KnockoutJS引入现有应用程序.我的计划是修改/利用我们已经创建的现有部分视图,并使用Knockout的声明属性将它们绑定到JS视图模型.当我对一个动作进行AJAX调用时,理想情况下我希望该动作返回部分视图的HTML和JSON对象.然后我可以用HTML填充div,将JSON转换为Knockout对象并将其绑定到HTML.但我无法弄清楚如何从行动中返回两者.

我需要完整的视图模型,因为我将更新它并最终将其发送回服务器.

我想过让动作返回局部视图(已绑定到模型),并在局部视图中,包含javascript以将.Net模型转换为Knockout对象.但是我觉得像这样分散JS是混乱而且不可维护的.我宁愿接近原来的ajax电话.

我想另一种选择是进行两次动作调用.一个用于JSON,另一个用于局部视图.但必须有一个更光滑的方式.

关于如何最好地做到这一点的任何想法?

asp.net-mvc jquery json knockout.js

14
推荐指数
1
解决办法
2万
查看次数

Web.config转换作为第一个子项插入

转换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)

asp.net xslt

14
推荐指数
1
解决办法
3004
查看次数

将大型JSON对象发布到ASP.NET MVC

我正在使用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)

这没有用.

还有什么我应该做的吗?

asp.net-mvc jquery json knockout.js

7
推荐指数
1
解决办法
9479
查看次数

.NET MVC Server_GetLastError始终返回缺少的视图错误

我正在尝试在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)

我期待它提供抛出的实际异常.我究竟做错了什么?

error-handling asp.net-mvc-3

3
推荐指数
1
解决办法
594
查看次数

调用返回JsonResult的操作的MVC Ajax.BeginForm在客户端上不成功

我正在尝试使用.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.

谢谢你的帮助.

ajax.beginform jsonresult asp.net-mvc-3

2
推荐指数
1
解决办法
4032
查看次数