我读过很多关于OWIN和Katana项目的文章,但我无法全面了解它.
对于使用ASP.NET的普通Web开发人员:
我知道的开发人员只是向我展示了FubuMVC,我们是否应该尝试在真实的实际项目中使用它,这是一个问题.目前的设计选择是ASP.NET MVC.
我有兴趣发现的是:
ASP.NET MVC和FubuMVC之间的核心区别是什么?
两种框架的收益/损失是什么?
FubuMVC准备好迎接黄金时段吗?
你会在新项目中使用这两个中的哪一个?
在具有域层(DL)/业务(服务)层(BL)/表示层(PL)的多层项目中,将实体传递到表示层的最佳方法是什么?
DO => Domain Object;
DTO = Domain Transfer Object;
VM => View Model;
V => View;
Run Code Online (Sandbox Code Playgroud)
选项1:
DL => DO => BL => DTO => PL => VM => V
Run Code Online (Sandbox Code Playgroud)
这个选项似乎是最佳实践,但似乎也很重要.
选项2:
DL => DO => BL => DTO => PL => V
Run Code Online (Sandbox Code Playgroud)
这个选项似乎不是很好的练习,但由于DTO与VM几乎完全相同,我们可以将它直接传递给View,实现和保护它不那么痛苦.
这个选项对于多个布局也是可靠的吗,例如,对于移动设备,我可能需要来自BL的较少信息,因此我需要为这个特定布局使用不同的VM?
我已经实现按钮,点击并按照上述方法用微调打开的对话框中点击这里
但这是两次点击.一个打开对话框,一个打开微调器.我希望只需单击按钮即可打开微调器?如何才能做到这一点?
无论如何只需通过按钮单击打开微调器即可进入对话框.如果不是,我如何打开对话框视图并同时打开微调器.
在我的代码中,我想在KnockoutJS foreach绑定完成呈现所有项目 之后执行函数或回调
我知道我可以通过检查我是否在最后一个元素(我发现这里执行完最后一个项目后的代码)来做到这一点.
但是每次渲染新元素或记录时都会调用我的回调函数.
我想只执行一次我的回调函数(性能).
UPDATE
另一个解决方案是在knockout.js完成呈现所有元素后成功回调.但是再次使用这个我的回调函数将在每次渲染一个新元素时被调用.
我有一个数据表,我想在这里删除一行是我的代码它给我一个例外
foreach (DataRow row in dt1.Rows)
{
if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
{
row.Delete();
dt1.AcceptChanges();
}
}
Run Code Online (Sandbox Code Playgroud)
我甚至尝试在if语句之外,并且在forloop之外仍然会抛出错误任何想法如何实现此任务这是我获得的异常:
Collection was modified; enumeration operation might not execute.
Run Code Online (Sandbox Code Playgroud)
最终工作守则:
foreach (DataRow row in dt1.Select())
{
if ((row["Name"] == "Select a Lookbook") || (row["Name"] == "Create a new Lookbook"))
{
row.Delete();
}
}
Run Code Online (Sandbox Code Playgroud) 基于这个问题:应该将哪种服务注入基类?(与静态类相比).
如何使用Ninject对装饰器进行绑定?或任何DIContainer?
public class CachedLoggedRepository : IRepository
{
public IRepository repository { get; set; }
void Add();
}
public class CachedRepository : IRepository
{
public IRepository repository { get; set; }
void Add();
}
public class Repository : IRepository
{
void Add();
}
Run Code Online (Sandbox Code Playgroud) 我努力但谷歌钱包注册显示"无效信用卡"错误的消息.我尝试过使用签证卡和万事达卡,但问题仍然存在.我认为这个问题正在发生,因为我没有在两张卡中启用网上银行服务.这是问题还是其他什么?我的应用已准备好发布,但我无法上传.
我正在使用automapper库将我转换Model成我的ViewModel.对于每一个Model,我创建配置文件,我在里面使用添加我的地图CreateMap.
我想使用自定义ValueResolver,它将从中获取记录的用户ID IContext,因此我需要传递IContext使用Ninject的实现.
在我的个人资料类中:
Mapper.CreateMap<ViewModel, BusinessModel>()
.ForMember(dest => dest.ManagerId, opt => opt.ResolveUsing<GetManagerResolver>());
Run Code Online (Sandbox Code Playgroud)
然后我的GetManagerResolver:
public class GetManagerResolver : ValueResolver<BusinessModel, int>
{
private IContext context;
public GetManagerResolver(IContext context)
{
this.context = context;
}
protected override int GetManagerResolver(BusinessModel source)
{
return context.UserId;
}
}
Run Code Online (Sandbox Code Playgroud)
但我收到此异常消息{"Type needs to have a constructor with 0 args or only optional args\r\nParameter name: type"}.
关于如何让automapper使用ninject进行对象创建的任何想法?
更新 我的代码以添加automapper配置:
public static …Run Code Online (Sandbox Code Playgroud) 我有一个简单的knockoutjs ViewModel.但在我将该模型的绑定应用到我的视图之前,我首先要初始化它,或者使用一些我将通过AJAX从服务器获取的数据(JSON格式)设置数组值.
我知道我可以创建我的模型的对象,制作ajax请求然后初始化我的模型数组.像这样:
function AppViewModel() {
var self = this;
self.Servers = ko.observableArray([]);//this one 'll be filled by data from server
}
var MyViewModel = new AppViewModel();
MyViewModel.Servers = ko.mapping.fromJSON(json_data);//make ajax call to get json_data.
ko.applyBindings(MyViewModel);
Run Code Online (Sandbox Code Playgroud)
这是好的做法还是有更好的做法.
asp.net ×2
asp.net-mvc ×2
automapper ×2
knockout.js ×2
ninject ×2
.net ×1
alt.net ×1
android ×1
c# ×1
datatable ×1
decorator ×1
dto ×1
foreach ×1
fubumvc ×1
google-play ×1
iis ×1
javascript ×1
katana ×1
owin ×1
spinner ×1
viewmodel ×1