我有一个表单,我只需要在几个实体之间进行选择.
所以这就是我所做的:
创建了一个视图模型:
public class EntityChooserModel
{
public IEnumerable<Entity> AvailableEntities { get; set; }
public int SelectedId;
}
Run Code Online (Sandbox Code Playgroud)
我在控制器中有两个动作,一个是[HTTPPost],一个没有.在两者中我都有一个"SessionUserData",它是会话数据,通过数据模型绑定绑定.
[Authorize]
public ActionResult EntityChooser(SessionUserData sessionData)
{
List<Entity> entities = _userStore.GetRoles(User.Identity.Name).Select(ur => ur.Entity).ToList();
Entity entity = sessionData.IdCurrentEntity != null ? entities.Where(e => e.Id == sessionData.IdCurrentEntity).First() : entities.First();
return View(new EntityChooserModel() { SelectedId = entity.Id, AvailableEntities = entities });
}
Run Code Online (Sandbox Code Playgroud)
.
[Authorize]
[HttpPost]
public ActionResult EntityChooser( EntityChooserModel model, SessionUserData sessionData, String returnUrl)
{
if (ModelState.IsValid)
{
Entity entity = _userStore.GetRoles(User.Identity.Name).Select(ur => ur.Entity).Where(e => …Run Code Online (Sandbox Code Playgroud) 对于开发中的Web应用程序(ASP.Net MVC),我正在使用telerik网格.网格绑定到我的列表的IQueryable,因为它是一个大表,我希望telerik在列表中应用它的过滤器,然后执行此结果,而不是下载10'000行(使用连接的表),然后使用过滤器,仅使用行.
我正在使用(我真的需要它用于此页面,这是关键功能之一)网格的过滤器/顺序.
主列之一(确定数据类型)是枚举.
问题是,"Specified type member is not supported in linq to entities"一旦我尝试过滤/排序,我就会得到一个.
我要将它绑定在枚举(而不是映射的int)上,因为如果我使用id,filter/order by将在int上,我不能指望用户知道外表的id.
我只是无法再次实现自己所有网格参数(位于网址)(我假设,它要么我做所有事情,要么什么都没有)并正确过滤它,正确地订购它).
你有解决方法吗?
我正在学习一个新的(小)项目的MVVM模式,我有一个关于在我们的控制器上调用动作的方法的问题:
我看到很多教程他们告诉我们使用Command,暗示声明一个RelayCommand,初始化它并创建RelayCommand调用的动作.
在另一方面,我有一位同事告诉我,我可以使用CallMethodAction触发器:
<i:Interaction.Triggers>
<i:EventTrigger>
<ei:CallMethodAction MethodName="Init" TargetObject="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)
对我来说,他的方法的优点是我不必为命令制作一些inits方法(可能永远不会使用).
那我错过了什么?为什么每个人都使用命令?
我要在用户点击的按钮上方显示ColorDialog.
目前我找不到如何指定这个位置:
StartPosition/ Location属性(当使用ShowDialog显示对话框时,如何控制对话框的位置?)我需要将它直接放在我的光标上方,指定X; Y.
有关如何实现这一点的任何想法?
谢谢!
使用自制的发现工具,我发现了一系列我感兴趣的服务.
我有他们的IP,服务名称,端口,主机......但是为了使用它们,我要向客户端库指定我们将使用的IP.
由于我有几个网卡,我需要检测哪个接口用于与我知道的目标IP通信,然后将其提供IPAddress给我的库.
但是我怎么能检测到我应该使用哪个接口IP?
我试图通过互联网进行一些搜索,但我认为我没有正确的关键字,因为我找不到任何相关的东西.
对于一个项目,我将不得不经常采用包含大量数据的数组的N个最后一个元素.
我试着做
myArray.Skip(myArray.Length - toTake).Take(toTake)
Run Code Online (Sandbox Code Playgroud)
但我发现它很慢.
我将它与此进行了比较:
public static int[] TakeLast(this int[] inputArray, int count)
{
int[] returnArray = new int[count];
int startIndex = Math.Max(inputArray.Count() - count, 0);
unsafe
{
fixed (int* itemArrayPtr = &(inputArray[startIndex]))
{
fixed (int* arrayPtr = &(returnArray[0]))
{
int* itemValuePtr = itemArrayPtr;
int* valuePtr = arrayPtr;
for (int i = 0; i < count; i++)
{
*valuePtr++ = *itemValuePtr++;
}
}
}
}
return returnArray;
}
Run Code Online (Sandbox Code Playgroud)
这很好用,这不是通用的(我希望这可以适用于任何基本类型(int,float,double,...).
有没有办法实现具有通用/ linq/...方法的可比性能?我不需要让它适用于IEnumerable,Array对我来说已经足够了.
编辑 我正在测试你给我的所有方法,现在它的Array.Copy似乎更快:
Generating array for 100000000 elements. …Run Code Online (Sandbox Code Playgroud) 我正在寻找 .Net 类,它基本上将:
是否有一个现有的 .Net 类可以做到这一点?
我知道HashSet(不保证顺序),SortedSet(内容的顺序),但它们不符合我的需要。我没有任何其他需求(例如 aStack或 a Queue)。
我目前的替代方法是拥有List<>并使用Contains(...)之前添加和删除数据。
我刚刚升级了我的VS2013,相同的代码在调试模式下有不同的行为.
在VS2013中,我得到了调试中断我得到的异常.
其中一些可能发生并被处理的部分放在带有DebuggerStepTrough的Try-catch块中:
例:
[DebuggerStepThrough]
private void DoSomething(){
try{
throw new InvalidOperationException();//Obviously in my case, it's not a throw exception here but a method
}catch(InvalidOperationException){
//log something & handling this case
}
}
private void SomeEntryPoint(){
DoSomething();//In VS2015 I got the debug breaking here. In VS2013 I don't
}
Run Code Online (Sandbox Code Playgroud)
我在VS2013中没有这种行为.有没有办法避免它?
(我启用了"Just My Code")
我目前正在测试VS2015以了解它对我们的解决方案的反应.我有一些麻烦,因为VS2015带来C#6,我不能还使用(因为我的同事没有这个,因为我们的构建机器也不会个月前拥有它).
我看到我应该能够为每个项目语言指定版本到C#5.我为我们所有的项目(其中270个)做了这个.现在,当我使用C#6功能进行编译时,我发现了一个错误,这很好.
但是,resharper一直试图让我使用Expression body进行属性,字符串插值,......
有没有办法让Resharper不提出这种改变?
我有以下 DevExpress 的 GridControl:
<dxg:GridControl SelectionMode="Row">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="TimeStamp" Header="Local Computer Time"/>
<dxg:GridColumn FieldName="Level" Header="Level" >
<dxg:GridColumn.DisplayTemplate>
<ControlTemplate>
<StackPanel Orientation="Horizontal">
<!-- Convert severity to image -->
<TextBlock Text="{Binding Name}" />
</StackPanel>
</ControlTemplate>
</dxg:GridColumn.DisplayTemplate>
</dxg:GridColumn>
<dxg:GridColumn FieldName="RenderedMessage" Header="Message"/>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView ShowFixedTotalSummary="True" Name="view" ShowIndicator="False" ShowGroupPanel="False" ShowAutoFilterRow="False" AllowColumnFiltering="False" AllowEditing="False" AllowFilterEditor="False" AllowGrouping="False" AllowMasterDetail="False">
<dxg:TableView.ColumnMenuCustomizations>
<dxb:RemoveBarItemAndLinkAction ItemName="BestFitColumns" />
</dxg:TableView.ColumnMenuCustomizations>
</dxg:TableView>
</dxg:GridControl.View>
</dxg:GridControl>
Run Code Online (Sandbox Code Playgroud)
我想 :
GridControl按降序排列“时间戳”我怎样才能做到这一点?我从现在开始就想弄清楚。
c# ×4
.net ×3
asp.net-mvc ×2
wpf ×2
arrays ×1
asp.net ×1
c#-6.0 ×1
collections ×1
debugging ×1
devexpress ×1
dialog ×1
enums ×1
forms ×1
gridcontrol ×1
linq ×1
list ×1
mvvm ×1
mvvm-light ×1
performance ×1
positioning ×1
resharper ×1
set ×1
telerik ×1
telerik-grid ×1
winforms ×1
xaml ×1