我正在加速ASP.NET MVC,看看我如何在视图中输出消息.做这样的事情最好的方法是什么?助手?控制?或者就是这样?
<% if (ViewData.ContainsKey("message") && !string.IsNullOrEmpty(ViewData["message"].ToString())) { %>
<div class="notice">
<%= ViewData["message"] %>
</div>
<% } %>
Run Code Online (Sandbox Code Playgroud) 使用Sinatra路由,如何在路径的同一部分中同时存在所需的命名参数和可选的命名参数.
可选路由参数在这里工作正常
get '/widgets.?:format?'
Run Code Online (Sandbox Code Playgroud)
但是,尝试组合一个必需的命名参数,事情就会破裂.
get '/widgets/:id.?:format?'
Run Code Online (Sandbox Code Playgroud)
对/widgets/abc.json的请求将整个abc.json作为id参数传递.
Sinatra编译的正则表达式是:
/^\/widgets\/([^\/?#]+)(?:\.|%2E)?([^\/?#]+)?$/
Run Code Online (Sandbox Code Playgroud) 给定 StatsD/Graphite 数据点如下所示
stats.counters.post.topic_1.user_1.count
stats.counters.post.topic_1.user_2.count
stats.counters.post.topic_2.user_3.count
stats.counters.post.topic_2.user_4.count
Run Code Online (Sandbox Code Playgroud)
我正在尝试绘制 3 件不同的事情
到目前为止,我已经收到了一些帖子
alias(summarize(sumSeries(stats.counters.post.*.*.count),"1hour"),"Total Posts")
Run Code Online (Sandbox Code Playgroud)
对于主题和用户,我有点卡住了。
我可以通过以下方式获得每个主题的系列/行:
aliasByNode(summarize(groupByNode(stats.counters.post.*.*.count, 3, "sumSeries"), "1hour"), 0)
Run Code Online (Sandbox Code Playgroud)
但是,这给出了每个主题的帖子数,而不是主题数。
我如何获得一段时间内的主题数量?由此,我确信我可以为用户应用同样的方法。
可能的重复:
如何将十六进制转换为字节数组?
我正在 C# 中寻找一种与 python 兼容的方法来将十六进制转换为二进制。我通过这样做在 Python 中反转了一个哈希:
import sha
import base64
import binascii
hexvalue = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
binaryval = binascii.unhexlify(hexvalue)
print base64.standard_b64encode(binaryval)
>> W6ph5Mm5Pz8GgiULbPgzG37mj9g=
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现的所有各种 Hex2Binary C# 方法最终都会抛出 OverflowExceptions:
static string Hex2Binary(string hexvalue)
{
string binaryval = "";
long b = Convert.ToInt64(hexvalue, 16);
binaryval = Convert.ToString(b);
byte[] bytes = Encoding.UTF8.GetBytes(binaryval);
return Convert.ToBase64String(bytes);
}
Run Code Online (Sandbox Code Playgroud)
有人知道如何生成 C# 方法来匹配 python 输出的提示吗?
更深入地了解实体框架和存储库,以便更好地进行测试。想知道这是否明智?
public interface IRepository
{
int SaveChanges();
void Dispose();
}
using (MyContext context = new MyContext())
{
TransactionRepository txns = new TransactionRepository(context); // TransactionRepository implement IRepository
MappingRepository maps = new MappingRepository(context); // MappingRepositoryimplement IRepository
SomeCommand command = new SomeCommand(txns, maps);
command.Execute();
}
Run Code Online (Sandbox Code Playgroud)
每个存储库在逻辑上都是不同的,因此理论上可能位于不同的数据源中。目前,他们使用相同的数据库。每个存储库类都实现 IRepository,特别是 SaveChanges() 以及一些查询方法,为了简洁起见,我没有展示这些方法。
使用多个存储库的良好做法是什么?
随着MVC 5的发布,Asp.Net.Identity位包括UserManager.实例化可能会变得混乱,我正在尝试添加Autofac控制器设置.
控制器的构造函数
public LoginController(UserManager<ApplicationUser> userManager)
{
UserManager = userManager;
}
Run Code Online (Sandbox Code Playgroud)
手动创建新实例:
var controller = new LoginController(UserManager<ApplicationUser>(new ApplicationUserStore<ApplicationUser>(new MyDbContext())));
Run Code Online (Sandbox Code Playgroud)
ApplicationUserStore类/构造函数:
public class ApplicationUserStore<TUser> : IUserLoginStore<TUser>, IUserStore<TUser>, IDisposable where TUser : ApplicationUser
public ApplicationUserStore(IMyDbContext context)
{
Context = context;
}
Run Code Online (Sandbox Code Playgroud)
我有新的db上下文正常工作:
builder.RegisterType<MyDbContext>().As<IMyDbContext>();
Run Code Online (Sandbox Code Playgroud)
LoginController的注册签名是什么?
为此,花费更多的时间来梳理SO.这是设置
这就是我在存储库中创建Db Context的方式
public class TransactionRepository : BaseRepository, ITransactionRepository
{
AccountingEntities _db = new AccountingEntities();
// repository methods
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器中
public class InvoiceController : BaseController
{
private ITransactionRepository _txnRepository;
public InvoiceController()
{
_txnRepository = new TransactionRepository();
}
public InvoiceController(ITransactionRepository t)
{
_txnRepository = t;
}
}
Run Code Online (Sandbox Code Playgroud)
最后,我已添加到web.config
<system.data>
<DbProviderFactories>
<remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
<add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.8.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
分析这些连接的后续步骤是什么?慢慢来,因为这是我第一次接触实体框架,所以假设EF连接/上下文细节很少.
entity-framework-4.1 database-first ef-database-first mvc-mini-profiler
我正在研究一个Python脚本来从类似于ASP.NET的MembershipProvider的现有系统创建散列字符串.使用Python,有没有办法获取十六进制字符串并将其转换回二进制文件然后执行base64编码,以某种方式将原始字符串视为Unicode.我们来试试吧.我想重新编码一个哈希密码,以便在Python和ASP.NET/C#中哈希值相等:
import base64
import sha
import binascii
def EncodePassword(password):
# strings are currently stored as hex
hex_hashed_password = sha.sha(password).hexdigest()
# attempt to convert hex to base64
bin_hashed_password = binascii.unhexlify(hex_hashed_password)
return base64.standard_b64encode(bin_hashed_password)
print EncodePassword("password")
# W6ph5Mm5Pz8GgiULbPgzG37mj9g=
Run Code Online (Sandbox Code Playgroud)
ASP.NET MembershipProvider使用此方法进行编码:
static string EncodePassword(string pass)
{
byte[] bytes = Encoding.Unicode.GetBytes(pass);
//bytes = Encoding.ASCII.GetBytes(pass);
byte[] inArray = null;
HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
inArray = algorithm.ComputeHash(bytes);
return Convert.ToBase64String(inArray);
}
string s = EncodePassword("password");
// 6Pl/upEE0epQR5SObftn+s2fW3M=
Run Code Online (Sandbox Code Playgroud)
那不匹配.但是,当我使用ASCII编码编码的密码运行它时,它匹配,所以.NET方法的Unicode部分是有区别的.
W6ph5Mm5Pz8GgiULbPgzG37mj9g =
在python脚本中是否有一种方法可以获得与默认.NET版本匹配的输出?