我有一个枚举我的视图模型的属性之一.我想显示一个下拉列表,其中包含枚举的所有值.我可以使用以下代码使用它.
我想知道是否有一种简单的方法从枚举转换为IEnumerable?我可以手动执行,如下例所示,但是当我添加新的枚举值时,代码会中断.我想我可以通过反射按照这个例子来做,但是还有其他方法可以做到这一点吗?
public enum Currencies
{
CAD, USD, EUR
}
public ViewModel
{
[Required]
public Currencies SelectedCurrency {get; set;}
public SelectList Currencies
{
List<Currencies> c = new List<Currencies>();
c.Add(Currencies.CAD);
c.Add(Currencies.USD);
c.Add(Currencies.EUR);
return new SelectList(c);
}
}
Run Code Online (Sandbox Code Playgroud) 在带有Entity Framework的ASP .NET MVC 3中,我有一个域对象,它具有引用其他对象的导航属性,如下所示:
public class Person
{
public String Name {get;set;}
public Guid CompanyID{get;set;}
[ForeignKey(CompanyID)]
public virtual CompanyType Company{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我创建Person的实例并尝试将其添加到数据库时,DBContext会保留此实体"Person"的缓存并将其发送到数据库.所以稍后在同一个上下文实例的生命周期中,当我尝试访问此实体时,Company字段始终为null,因为导航属性永远不会更新.
有没有办法用数据库中存在的内容更新导航属性?
延迟加载已打开.
entity-framework navigation-properties ef-code-first asp.net-mvc-3 dbcontext
在我的应用程序中,我想通知用户ShellToast.
只是跑步......
var toast = new ShellToast
{
Title = "Nom nom nom!",
Content = "More! More! Keep feeding me!",
};
toast.Show();
Run Code Online (Sandbox Code Playgroud)
......没有任何事情发生,据我所知,它需要从一个运行ScheduledTaskAgent.但是如何在命令上运行它,并确保它只运行一次?
我想在 Startup.cs 完成后做一些异步工作。我通过扩展BackgroundService.
我的问题是如何在我确定的时间取消任务运行?我只能在文档中看到延迟下一个周期的示例。
我尝试手动执行,StopAsync但 while 循环会永远执行(令牌没有被取消,即使我觉得应该取消,因为我已经将令牌传递给了StopAsync,并且实现看起来就是它的意思)。
下面是一些简化的代码:
public class MyBackgroundService : BackgroundService
{
private readonly ILogger<MyBackgroundService> _logger;
public MyBackgroundService(ILogger<MyBackgroundService> logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
_logger.LogInformation("MyBackgroundService is starting.");
while (!stoppingToken.IsCancellationRequested)
{
_logger.LogInformation("MyBackgroundService task doing background work.");
var success = await DoOperation();
if (!success)
{
// Try again in 5 seconds
await Task.Delay(5000, stoppingToken);
continue;
}
await StopAsync(stoppingToken);
}
}
}
Run Code Online (Sandbox Code Playgroud) 使用Windows.Web.Http.HttpClient我如何下载图像?我想使用这个HttpClient,因为它可用于可移植类库.
c# windows-phone portable-class-library windows-8.1 windows-phone-8.1
我试图launch_url在我的测试中使用该属性,并在将浏览器发送到该URL之前附加相对路径.
我知道browser.init();将浏览器发送到该地址,launch_url但我想知道是否可以在执行重定向之前将一些字符串附加到检索到的URL.
假设我launch_url是www.xxx.com,我想做的事情如下:
this.test = function (client) {
client.init("/a/b/c"); // >> should result in the browser going to www.xxx.com/a/b/c
};
Run Code Online (Sandbox Code Playgroud)
任何的想法?
谢谢
我有部分视图由jquery呈现,我想使用jquery刷新视图.这是我的代码的样子.
<div id="left">
<input type="button" id="refresh" value="refresh" />
@Html.Partial("_LeftColumn", new ColumnViewModel { Attempt= DateTime.Now })
</div>
<script type="text/javascript">
$('#refresh').click(function () {
$.ajax({
type: "post",
dataType: "html",
url: 'Home/LeftColumnData',
data: {},
success: function (response) {
$('#left').html(response);
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
在控制器动作中,我这样写了
[ChildActionOnly]
public PartialViewResult LeftColumnData()
{
var Column= new ColumnViewModel { Attempt= DateTime.Now };
return PartialView("_LeftColumn", Column);
}
Run Code Online (Sandbox Code Playgroud)
我不希望用户直接从浏览器请求ColumnData,除非通过ajax,但是这种方法我得到下面的错误.

我该怎么做才能删除ChildActionOnly属性并允许直接请求查看?这个问题有哪些替代方案?
我需要在查询中有条件地添加过滤器到特定日期.有共同的先决条件,过滤器将是相同的.因此,我希望公共代码位于一个方法中,该方法可以执行这些检查,然后让消费者传入应该应用过滤器的属性(可以应用于多个).
这是我的代码的简化版本.
var query = dbContext.Documents.AsQueryable();
query = FilterDocumentsByDate(query, x => x.CreatedDate);
query = FilterDocumentsByDate(query, x => x.SubmittedDate);
private IQueryable<Document> FilterDocumentsByDate(IQueryable<Document> query, Func<Document, DateTime> propertyToSearch)
{
query = query.Where(x => propertyToSearch(x).Year > 2000);
return query;
}
Run Code Online (Sandbox Code Playgroud)
当我在SQL profiler中查看查询时,我可以看到查询缺少WHERE子句(因此正在检索所有文档并且过滤器正在内存中完成).如果我为两个日期内联复制/粘贴代码(而不是两次调用该方法),那么两个日期的WHERE子句都包含在查询中.
是否无法通过在Func中传递属性来向IQueryable添加WHERE条件,该属性可以通过Entity Framework正确转换为SQL?
在 HTML5 中,我们有<input type="search" />不同的行为在多个浏览器上。
添加文本时,Webkit 会添加一个清除按钮,而 Firefox 不会。
有没有办法;除了浏览器嗅探之外,还可以检测浏览器是否支持清除按钮?
c# ×4
asp.net-core ×2
.net-core ×1
asp.net-mvc ×1
dbcontext ×1
enums ×1
firefox ×1
generics ×1
html ×1
ienumerable ×1
javascript ×1
jquery ×1
webkit ×1
windows-8.1 ×1