我已经在一个大型的Angular应用程序上工作了将近一年,而且我一直在努力做我想做的事情.
以下是我使用params的两条路线(为简洁而缩短):
/a/:id
/a/:id/b
Run Code Online (Sandbox Code Playgroud)
假设用户在,/a/1并且修改了查询字符串,例如:
/#/a/1?foo=123&bar=456
Run Code Online (Sandbox Code Playgroud)
我希望在页面上有一个链接,用于/a/1/b在保持查询字符串的同时将用户引导到第二条路由,因此最终结果是重定向到:
/#/a/1/b?foo=123&bar=456
Run Code Online (Sandbox Code Playgroud)
我正在使用Angular 1.2和新的ngRoute模块.
实现这种行为的最佳方法是什么?
编辑:
我应该提一下,我现在有一个工作解决方案对我来说似乎很糟糕.该链接绑定到一个ng-click处理程序,该处理程序基本上如下:
$scope.navigateToBClick = function() {
var path = $location.path() + '/b',
search = $location.search();
$location.url(path + '?' + $.param(search));
};
Run Code Online (Sandbox Code Playgroud) 我的团队和我有一个AngularJS应用程序,它不使用RequireJS,而是在使用RequireJS 的现有站点的上下文中加载.在构建过程中,我将所有脚本缩小/连接成一个JS文件,其中包含某些供应商库,如Lodash,Moment等.
运行与父隔离的站点很好,但在父应用程序的上下文中,我得到了记录良好的错误:
Uncaught Error: Mismatched anonymous define() module: function () { return _; }
Run Code Online (Sandbox Code Playgroud)
我没有父应用程序的控制权,有没有办法在运行时 "禁用"RequireJS或将其配置为忽略我的脚本?
我们当前的解决方案是修改供应商库并删除AMD代码,但这是不受欢迎的,因为我们使用Bower(使用grunt-bower-install)并且希望自动更新依赖项而不是依赖于手动流程和自定义hacks .
为什么TFS不想再把我的旧文件给我?
开发分支

主枝

将Dev合并到Main

编辑: 鉴于下面的第一个答案和一些更多的调查,我相信我正在尝试完成整个分支覆盖.这可能吗?
保持这个问题简短而甜蜜.当我尝试将JSON对象传递给ASMX Web服务时,我收到500错误.请注意,如果我将params声明为单个变量(例如int ID, int OrderHeaderID,等),我不会收到错误.我不明白为什么会出现这个问题,我之前已经成功地以这种方式传递了对象,可能使用了不同的语法,但我记不得了.
JS:
var returnHeader = {
ID: -1,
OrderHeaderID: parseInt(getQueryStringKey('OrderID')),
StatusID: 1,
DeliveryCharge: 0,
CreatedBy: $('span[id$="lblHidUsername"]').text(),
ApprovedBy: $('span[id$="lblHidUsername"]').text()
};
$.ajax({
type: "POST",
url: 'Order.asmx/SaveReturnHeader',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(returnHeader),
success: function (result) {
if (result.Status == 'OK') {
GetReturns();
}
else {
$('#divMessage').show().html(result.Data.Message).addClass('error');
}
},
error: function (x, e) {
if (x.status == 500) {
$('#divMessage').show().html('An unexpected server error has occurred, please contact support').addClass('error');
}
}
});
Run Code Online (Sandbox Code Playgroud)
服务器: …
我在Moq页面上尝试的链接有一半是断开的,包括用于其官方API文档的链接。所以我会在这里问。
我已经成功地使用了一个“ catch all”参数,如下所示:
mockRepo.Setup(r => r.GetById(It.IsAny<int>())).Returns((int i) => mockCollection.Where(x => x.Id == i).Single());
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何使用多个参数实现相同的行为。
mockRepo.Setup(r => r.GetByABunchOfStuff(It.IsAny<int>(), It.IsAny<string>(), It.IsAny<int>())).Returns( ..... );
Run Code Online (Sandbox Code Playgroud)
这....是我不知道的部分。
编辑以回应约旦:
问题是如何表示3个参数而不是仅3个。
如何转弯:
(int i) => mockCollection.Where(x => x.Id == i)
Run Code Online (Sandbox Code Playgroud)
变成:
(int i), (string s), (int j) => mockCollection.Where(x => x.Id == i && x.SomeProp == s && x.SomeOtherProp == j)
Run Code Online (Sandbox Code Playgroud) 我的应用程序运行时收到以下错误:
System.InvalidOperationException:未映射"ContactModels + Contact"类型.使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型.验证类型是否已定义为类,不是原始类,嵌套类还是通用类,并且不从EntityObject继承.
当我的DBContext类尝试初始化实体时失败:
public class DB : DbContext
{
public DbSet<ContactModels.Contact> Contacts { get; set; }
....
}
Run Code Online (Sandbox Code Playgroud)
Contact模型如下:
public class ContactModels
{
public class Contact
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
...
}
}
Run Code Online (Sandbox Code Playgroud)
连接字符串:
<add name="DB" connectionString="Data Source=XXXXX;Initial Catalog=XXXX;Trusted_Connection=True"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我得到的错误是数据库是否存在,或者即使它不存在,我也将其初始化:
protected void Application_Start()
{
Database.SetInitializer(new CreateDatabaseIfNotExists<Models.DB>());
....
}
Run Code Online (Sandbox Code Playgroud)
这是我第一次使用EF,我已经遵循了一些教程,但我使用的是SQL Server 2008 R2,并且更愿意自己创建数据库,而不是让EF为我创建它.虽然在这一点上我会采取任何一个,如果它的工作.
如果我有一个复杂的对象,我可以继承它并删除或忽略某些属性吗?
如果您不在乎我为什么要这样做,请随时提交答案.
如果你关心,你可以阅读这个问题.总结一下,我有一个对象具有一个不可序列化的属性,我想序列化整个对象.有问题的对象是System.Exception
为了解决这个问题,我想简单地创建自己的JsonException对象,继承base(System.Exception)的所有可爱属性,除了删除(或清空)丑小鸭(Exception.TargetSite).
就像是:
public class MyException : Exception
{
// Note this is not actually possible
// just demonstrating what I thought to do in theory
public override System.Reflection.MethodBase TargetSite
{
get
{
return null;
}
}
public MyException(string message)
: base()
{
}
}
Run Code Online (Sandbox Code Playgroud)
另外请记住,我坚持使用.NET 2.0,如果我不需要,我真的不想使用自定义序列化程序(如Json.NET).
我不知道为什么我经常与此斗争,但有人可以解释为什么这不起作用?
/重定向到控制器的index动作home.
/gallery/ 抛出404未找到的错误.
/gallery/index重定向到控制器的index动作gallery.
从文档:
定义路径时,可以为参数指定默认值.如果URL中未包含该参数的值,则使用默认值.您可以通过将字典对象分配给Route类的Defaults属性来设置路由的默认值.
我不明白这是如何遵循这条规则的:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
它对我来说:
controller未定义a,请使用Home.action未定义,请使用Index.gallery并且URL中不包含操作,因此它应该转到Index.我是否遗漏了某些不必要的混淆和愚蠢的东西?
我总是发现MVC3路由有问题但接受了它.然后我开始使用Rails和Node框架,并且它们具有可笑的简单路由,所以现在.NET MVC只是在它不起作用时使我烦恼或者让我使用复杂的模式.
作为参考,以防有人询问,我的图库控制器,操作和视图都已定义并在我浏览时工作/gallery/index.
public class GalleryController : Controller
{
public ActionResult Index()
{
return View();
} …Run Code Online (Sandbox Code Playgroud) 在jQuery中运行for循环的问题只运行一次.Users是一个包含4个项目的数组,对于每个项目,它应该将该项目作为列表元素附加到userList,这是一个ul.它按预期将第一个元素附加到数组中,但仅包含该元素.不知道为什么它没有贯穿整个阵列?
$(document).ready(function() {
var $currentUser = $('<li class="user"></li>');
for(var i = 0; i < users.length; i++) {
$currentUser.text(users[i]);
$currentUser.appendTo('.userList');
}
//alert(users.length) returns "4".
});
Run Code Online (Sandbox Code Playgroud) c# ×3
angularjs ×2
javascript ×2
jquery ×2
.net ×1
ajax ×1
amd ×1
asmx ×1
json ×1
mocking ×1
moq ×1
nested-class ×1
oop ×1
requirejs ×1
sql-server ×1
tfs ×1
tfsbuild ×1
url-routing ×1
web-services ×1