我有两个用户定义的CLR对象,它们是相同的,只是名称不同,例如这段代码:
public class Person
{
public string Name { get; set; }
public string Address { get; set; }
public string LastName { get; set; }
public string ETC { get; set; }
}
public class PersonData
{
public string Name { get; set; }
public string Address { get; set; }
public string LastName { get; set; }
public string ETC { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我知道这可以通过从这些CLR中的任何一个创建一个对象,然后逐个传递所有属性来完成.
但还有另一种方式吗?我有一些相当大的CLR,15个属性.
[编辑]
更多上下文.那里的课程已经存在.我使用数据库生成了一个模型EntityFramework.数据库与类几乎完全相同.
此外,它已经存在很多代码.这些类也继承了几个接口等.现在重构不是一个选项,所以我现在正在寻找一个简单的解决方案.
我正在尝试做一个映射KnockoutJS模型的帖子.我可以看到调试时,这JSON是正确的.但服务器显示Product为0(空).虽然它确实包含1个项目.
MVC Controller:
[HttpPost]
public ActionResult Test(MyModel model, FormCollection fc)
{
return RedirectToAction("index");
}
Run Code Online (Sandbox Code Playgroud)
在AJAX提交:
$('#btnSubmit').click(function (event) {
var theModel = ko.mapping.toJSON(viewModel);
debugger;
$.ajax({
type: 'POST',
url: "@Url.Action("Test", "Home")",
data: theModel,
contentType: 'application/json; charset=utf-8',
success: function (result) {
if (!result.success) {
//alert(result.error);
}
else { }
}
});
});
Run Code Online (Sandbox Code Playgroud)
这是一个部分JSON对象:
"Products":[{"Id":2,"Name":"bread"}]
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:
public class MyModel
{
public int User { get; set; }
public string Address { get; …Run Code Online (Sandbox Code Playgroud) 当我尝试在数据库中插入记录时,我收到以下错误消息:
INSERT语句与FOREIGN KEY约束"FK_dbo.Order_dbo.AspNetUsers_UserId"冲突.冲突发生在数据库"Test",表"dbo.AspNetUsers",列"Id"中.该语句已终止.
免责声明:我知道之前已经问过这个问题(这里,这里和这里),但没有一个答案帮我修复了这个错误.
以下是模型:
[Table("Order")]
public class Order
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key]
public int Id { get; set; }
[Required]
public string UserId { get; set; }
public virtual List<OrderDetails> OrderDetails { get; set; }
[ForeignKey("UserId")]
public virtual ApplicationUser User { get; set; }
}
[Table("OrderDetails")]
public class OrderDetails
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity), Key]
public int Id { get; set; }
[Required]
public int OrderId { get; set; }
[ForeignKey("OrderId")]
public virtual Order Order { get; …Run Code Online (Sandbox Code Playgroud) c# runtime-error ef-code-first entity-framework-6 asp.net-identity
我想使用其他信息来修改Message属性Exception。例如从生成SQL的EF。
但是我不想失去任何原始东西Exception。这会让我迷失stacktrace:
catch (Exception ex)
{
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
这些Exception来自数据层。我想要throw他们,以便可以使用登录Elmah。
我有什么选择?
我有一个div包含一堆元素.这div将被隐藏(动画fadeOut())如果屏幕尺寸小于767px较小.但是如果用户点击其中的任何元素div,我想停止fadeOut().
但正如我现在看到的那样,我将不得不为我内部的每个元素添加一个click事件div.是不是有更优雅的方式来捕获所有点击事件div?
我创建了一个jsFiddle,它显示chosen-select控件被其父级"截断" div.即使overflow设置为y轴隐藏,它也会在单击chosen-select控件时显示滚动条.
在height这位家长的div固定和设置200px,并需要保持这种方式.
点击后如何查看chosen-select父母div?
编辑: jsFiddle更新更新CSS.如果我评论的div.content,它不会弄乱布局.
该chosen-select控件现在位于第4个标题之上.在这个小提琴我仍然可以选择chosen-select控件,但在我的应用程序中我不能.
我需要为头部的位置做些什么吗?
EDIT2: jsFiddle.我刚注意到,chosen-select当标题1/2向上滑动时,控制器保持在其位置.为了记录,这不会发生在我的应用程序中.
发生了什么,当你向上滑动第三个时heading,chosen-select控制是可见的,直到它一直滑落.与其他标题不同,其中的标题input正在慢慢隐藏.
我有来自TB的glyphicons的这个问题.在这个jsFiddle中你可以看到glyphicon glyphicon-search出现在div紫色方块下面的幻灯片的顶部.
要查看此效果,请按右侧的按钮.
我的问题是,我该怎样避免这种情况?默认情况下,那些glyphicons是position:relative,我想保留它.
除非我显示一些代码,否则无法发布此内容..
$("#btn").click(function(){
$('#slider').remove();
var sliderDiv = "<div id='slider' " +
"class='alert alert-info alert-dismissable' " +
"style='position: absolute; width:240px;'> " +
"<button type='button' class='close' data-dismiss='alert' aria-hidden='true'>×</button> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ornare condimentum sapien, vitae pulvinar libero ultrices sit amet.</div>";
$(sliderDiv).insertAfter('#testing').hide().fadeIn('slow').wait(50000).slideUp('slow');
});
Run Code Online (Sandbox Code Playgroud) 我正在尝试拦截并将所有SQL命令记录到数据库中.我也需要参数及其值.但command.Parameters没有IEnumerable.我可以去找一个for-statement但有点感觉就像一个退缩.
public override void ScalarExecuted(DbCommand command, DbCommandInterceptionContext<object> interceptionContext)
{
_stopwatch.Stop();
if (interceptionContext.Exception != null)
{
_logger.Error(interceptionContext.Exception, "Error executing command: {0}", command.CommandText);
string param = string.Empty;
if (command.Parameters.Count > 0)
{
foreach (var t in command.Parameters)
{
param += t....
}
}
Log log = new Log()
{
Date = DateTime.UtcNow,
LogLevel = LogLevel.Error,
Message = command.CommandText + "\r\n " + param.
};
}
else
_logger.TraceApi("SQL Database", "CommandInterceptor.ScalarExecuted", _stopwatch.Elapsed, "Command: {0}: ", command.CommandText); …Run Code Online (Sandbox Code Playgroud) 当我运行所有测试时,使用[TestInitialize]属性修饰的方法会针对我拥有的每个测试方法执行。
这些测试属于集成测试类型,用于测试数据库访问逻辑。在具有[TestInitialize]属性的方法中,我将一些测试数据插入到数据库中,这在多次执行时会导致以下异常:
结果消息:初始化方法......FilterRepositoryTests.Initialize 抛出异常。System.Data.Entity.Infrastructure.DbUpdateException:System.Data.Entity.Infrastructure.DbUpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.Data.Entity.Core.UpdateException:更新条目时出错。有关详细信息,请参阅内部异常。---> System.Data.SqlClient.SqlException:无法在具有唯一索引 'IX_Name' 的对象 'dbo.User' 中插入重复的键行。重复的键值为 (Person 1)。该语句已终止..
插入数据需要一些时间,所以我宁愿不为我拥有的每个测试方法删除和重新创建数据库。
那么如何才能为所有测试只执行一次初始化/设置方法呢?
c# ×5
css ×3
asp.net-mvc ×1
casting ×1
elmah.mvc ×1
exception ×1
height ×1
html ×1
interceptor ×1
javascript ×1
jquery ×1
json ×1
knockout.js ×1
logging ×1
onclick ×1
sqlcommand ×1
stretch ×1