我目前正在开发一个小型的ASP.NET MVC项目.
我试图实现Nhibernate持久化MS Sql Server数据库.花了很长时间研究DDD和互联网上发现的其他项目后,我决定采用存储库模式.现在我面临着两难的局面.
使用Nhinbernate时是否真的需要存储库?
拥有一个与Nhinbernate交互的服务层(我目前没有服务层)不是更好,避免写多次这样的事情:
public Domain.Reminder GetById(Guid Code)
{
return (_session.Get<Domain.Reminder>(Code));
}
public Domain.Reminder LoadById(Guid Code)
{
return (_session.Load<Domain.Reminder>(Code));
}
public bool Save(Domain.Reminder Reminder)
{
_session.SaveOrUpdate(Reminder);
return (true);
}
public bool Delete(Domain.Reminder Reminder)
{
_session.Delete(Reminder);
return (true);
}
Run Code Online (Sandbox Code Playgroud)
我找到了一个旧的Ayende的POST,这是针对存储库的.
我知道围绕这些主题有一个很大的争论,答案总是......依赖,但在我看来,由于抽象层次过多,事情变得更加复杂,难以理解.
我错了吗?
可能重复:
实体框架4与NHibernate
我一直在尝试开发软件超过10年.
我主要使用MS技术,从VB3,COM +开始,然后是ASP.NET和ASP.NET MVC.
在这些年里,我使用了所有新的闪亮的MS技术来访问数据库.
我记得记录集,数据集,rds,ado,ado.net等等.每次我觉得它是最后一个,但每隔几年,再一次,试图学习一个本来会持久的新事物.几个月.现在我跳上了Nhibernate旅行车,我非常喜欢那个家伙.我想开始使用Entity Framework做一些事情,但我想我可以等下一个;-)你对此有什么看法?
我试图掌握Knockout(2.2.0)背后的概念.
由于我正在使用ASP.NET MVC 4,我想我可以遵循一个具有"复杂"视图模型(master-details)的示例.
我唯一能找到的就是MvcMusicStore.
代码很容易阅读,我已经想出如何从服务器读取视图模型并在客户端上构建视图模型.
这是我的C#ViewModel:
public class Person
{
public Person()
{
this.Phones = new List<Phone>();
}
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public IList<Phone> Phones { get; set; }
}
public class Phone
{
public string Model { get; set; }
public string Number { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的控制器将一个填充的模型返回给视图,该视图将其转换为一个挖空视图模型:
var data = @Html.Raw(new …
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以从OwinContext.Request实例解析多部分/表单数据信息 ?
我知道如何使用HttpContext.Current.Request.Form.Get()做到这一点,但是我不确定我是否真的想在Owin管道中做到这一点。
我知道我可以使用.ReadFormAsync()来获取IFormCollection,它对于标准提交似乎很好用,但是使用多部分/表单数据后,边界值,内容类型和变量名都被放入了键。因此,我不能只是执行formVars.Get(“ VariableName”),因为它不是变量名,而是一个复合值。似乎它不应该那样做...对吗?
public AppFunc PreAuthMiddleware(AppFunc next) {
AppFunc appFunc = async (IDictionary<string, object> environment) => {
IOwinContext context = new OwinContext(environment);
IFormCollection formVars = await context.Request.ReadFormAsync();
... Now What ...
await next.Invoke(environment);
};
return appFunc;
}
Run Code Online (Sandbox Code Playgroud)
我希望访问表单变量和文件数据就像使用HttpContext一样容易,但是似乎还有很多工作要做。
如果有人对此有任何见解,请告诉我。否则,如果我看到主要的内容类型是multi-part / form-data,那么我可能最终只会一起破解密钥名称。
我下载了katana项目,想在沙箱项目中尝试客户端/服务器.
我为OAuthValidateClientAuthenticationContext遇到了一个问题:
public bool TryGetFormCredentials(out string clientId, out string clientSecret)
{
clientId = Parameters.Get(Constants.Parameters.ClientId);
if (!String.IsNullOrEmpty(clientId))
{
clientSecret = Parameters.Get(Constants.Parameters.ClientSecret);
ClientId = clientId;
return true;
}
clientId = null;
clientSecret = null;
return false;
}
Run Code Online (Sandbox Code Playgroud)
clientSecret为null,因此以下内容未验证客户端.
private Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
string clientId;
string clientSecret;
if (context.TryGetBasicCredentials(out clientId, out clientSecret) ||
context.TryGetFormCredentials(out clientId, out clientSecret))
{
if (clientId == "123456" && clientSecret == "abcdef")
{
context.Validated();
}
else if (context.ClientId == "7890ab" && clientSecret == "7890ab")
{
context.Validated();
}
} …
Run Code Online (Sandbox Code Playgroud) 我按照这篇文章http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api通过https强制执行所有api调用.
我使用Visual Studio模板之一通过以下代码启用oAuth:
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
Run Code Online (Sandbox Code Playgroud)
这基本上说我们可以通过http://server.com/Token网址请求访问令牌.
我的问题是如何通过SSL强制执行令牌检索(任何非https请求令牌的请求都将被拒绝).
我有一个Select2工作正常附加到选择列表,但当有人输入一个新项目,我重新绑定选择列表并尝试以编程方式选择新项目,它拒绝显示.
还有很多其他帖子,但他们的解决方案对我不起作用.
.select2("val", value)
.什么也没做..select2("data", value)
.什么也没做.不确定这应该是多么不同. InitSelection
选项设置值.这会导致以下错误消息:Uncaught Error: Option 'initSelection' is not allowed for Select2 when attached to a select element
.在将新选项添加到数据库后的Ajax成功函数中,我有以下Javascript:
BindDishes(RestaurantID); //rebinds the select list successfully
$('#hidDishID').val = data.DishID; //populates a hidden field
var arr = '[{id: "' + data.DishID + '", text: "' + data.DishName + '"}]';
$("#dd").select2("data", arr);
Run Code Online (Sandbox Code Playgroud)
所以在这个最新的迭代中,我试图根据另一个建议的解决方案提供一个包含选择列表项中的id和text的数组,但仍然没有发生任何事情.我究竟做错了什么?将Select2与选择列表一起使用时,这是不可能的?
编辑:我在MVC中有以下行创建选择列表:
@Html.DropDownGroupListFor(m => m.DishID, Model.GroupedSelectList, "Select a dish", new { id="dd",style="width:470px;" })
Run Code Online (Sandbox Code Playgroud)
这必须通过绑定到模型中的DishID来引起问题,该模型在来自服务器时最初是空白的.DropDownGroupListFor只是一个HTML助手,它允许在Select中使用OptionGroups,但它必须是一个有问题的绑定.这里最好的方法是什么,以不同的方式绑定或以某种方式更新模型的DishID,不确定最佳实践?
我正在使用以下代码段来获取工作正常的每月的第一天和最后一天,但我需要的只是获取Name字符串,例如“ Fri”,“ Wed”,“ Sun”,并且代码返回的是长日期格式:
2014年10月31日,星期五00:00:00 GMT-0700(太平洋夏令时间)
var today = new Date();
var lastOfMonth = new Date(today.getFullYear(),today.getMonth()+1, 0);
var today = new Date();
var firstOfMonth = new Date(today.getFullYear(),today.getMonth(), 1);
Run Code Online (Sandbox Code Playgroud)
您能否让我知道我如何只能获取getDay()
第一天的一周中的一天的名称或编号?
我正在开发一个部署在 IIS 7.0 中的 asp.net mvc5 web 应用程序 + 实体框架 6.0。目前我有一个 NetworkScanning 服务器,我将其实现为正常操作方法,可以通过两种方式启动:-
1.基于 global.asax 中定义的时间表:-
static void ScheduleTaskTrigger()
{
HttpRuntime.Cache.Add("ScheduledTaskTrigger",
string.Empty,
null,
Cache.NoAbsoluteExpiration,
TimeSpan.FromMinutes(Double.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["ScanInMinutes"])), // as defined inside the web.config
CacheItemPriority.NotRemovable,
new CacheItemRemovedCallback(PerformScheduledTasks));
}
static void PerformScheduledTasks(string key, Object value, CacheItemRemovedReason reason)
{
//Your TODO
HomeController h = new HomeController();
var c = h.ScanNetwork("***", "allscan");
ScheduleTaskTrigger();
}
Run Code Online (Sandbox Code Playgroud)
2.或者从用户浏览器手动调用action方法。
现在 action 方法看起来如下(我删除了很多代码,因为这个想法是为了提示我在 action 方法中所做的事情):-
public async Task<ActionResult> ScanNetwork(string token, string FQDN)
{
string TToken = System.Web.Configuration.WebConfigurationManager.AppSettings["TToken"];//get the T token from …
Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×3
jquery ×3
asp.net ×2
javascript ×2
nhibernate ×2
owin ×2
forms ×1
https ×1
iis ×1
jqgrid ×1
katana ×1
knockout.js ×1
oauth-2.0 ×1
quartz.net ×1
ssl ×1