有没有办法在Controller级别添加属性,但不能在特定操作上添加.例如,如果我在我的控制器中有10个动作,那些动作中只有一个不需要我创建的特定属性.
[MyAttribute]
public class MyController : Controller
{
public ActionResult Action1() {}
public ActionResult Action2() {}
[Remove_MyAttribute]
public ActionResult Action3() {}
}
我可能会将此Action移动到另一个控制器(但不喜欢)或者我可以将MyAttribute应用于除Action3之外的所有操作,但只是想如果有更简单的方法?
我有一个扩展方法,用于将通用列表转换为字符串.
public static string ConvertToString<T>(this IList<T> list)
{
StringBuilder sb = new StringBuilder();
foreach (T item in list)
{
sb.Append(item.ToString());
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
我有一个对象,它是一个包含列表的对象类型; 这个名单可以是List<string>,List<int>,List<ComplexType>任何类型的列表.
有没有办法可以检测到这个对象是一个通用列表,因此转换为特定的通用列表类型来调用ConvertToString方法?
//ignore whats happening here
//just need to know its an object which is actually a list
object o = new List<int>() { 1, 2, 3, 4, 5 };
if (o is of type list)
{
string value = (cast o to generic type).ConvertToString();
}
Run Code Online (Sandbox Code Playgroud) 我很好奇是否IEnumerable与IObservable引擎盖下有什么不同.我分别理解了pull和push模式但是C#在内存等方面如何通知订阅者(对于IObservable)它应该在内存中接收下一位数据来处理?观察到的实例如何知道它有一个数据的变化推送到订阅者.
我的问题来自于我正在从文件中读取行的测试.该文件总共约为6Mb.
标准时间:4.7s,行:36587
Rx拍摄时间:0.68秒,行:36587
Rx如何能够大规模地改进文件中每条线的正常迭代?
private static void ReadStandardFile()
{
var timer = Stopwatch.StartNew();
var linesProcessed = 0;
foreach (var l in ReadLines(new FileStream(_filePath, FileMode.Open)))
{
var s = l.Split(',');
linesProcessed++;
}
timer.Stop();
_log.DebugFormat("Standard Time Taken: {0}s, lines: {1}",
timer.Elapsed.ToString(), linesProcessed);
}
private static void ReadRxFile()
{
var timer = Stopwatch.StartNew();
var linesProcessed = 0;
var query = ReadLines(new FileStream(_filePath, FileMode.Open)).ToObservable();
using (query.Subscribe((line) =>
{
var s = line.Split(',');
linesProcessed++;
}));
timer.Stop();
_log.DebugFormat("Rx Time Taken: {0}s, …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个特定的HtmlHelper表扩展来减少视图中的意大利面条代码.
获取域对象列表我想显示一个表,它在使用域对象的属性作为列时更加智能.另外,我想禁用一些属性作为列显示.一个想法是用属性来装饰属性,告诉它不被显示.
希望这是有道理的,但到目前为止我到达的地方......
public static string MyTable(this HtmlHelper helper, string name,
IList<MyObject> items, object tableAttributes)
{
if (items == null || items.Count == 0)
return String.Empty;
StringBuilder sb = new StringBuilder();
BuildTableHeader(sb, items[0].GetType());
//TODO: to be implemented...
//foreach (var i in items)
// BuildMyObjectTableRow(sb, i);
TagBuilder builder = new TagBuilder("table");
builder.MergeAttributes(new RouteValueDictionary(tableAttributes));
builder.MergeAttribute("name", name);
builder.InnerHtml = sb.ToString();
return builder.ToString(TagRenderMode.Normal);
}
private static void BuildTableHeader(StringBuilder sb, Type p)
{
sb.AppendLine("<tr>");
//some how here determine if this property should be shown or …Run Code Online (Sandbox Code Playgroud) 之前已经问过这个问题,但我一直试图在powershell中使用一个解决方案但是没有得到预期的结果.
$line = '1,2,"N",09/04/13,"P09042013ZSD(1,0)","ZSD"'
[string[]] $splitColumns = $line.Split('(,)(?=(?:[^"]|"[^"]*")*$)', [StringSplitOptions]'RemoveEmptyEntries')
Run Code Online (Sandbox Code Playgroud)
当我循环通过我期待的分裂值
1
2
"N"
09/04/13
"P09042013ZSD(1,0)"
"ZSD"
Run Code Online (Sandbox Code Playgroud)
但我得到了
1
2
N
09/04/13
P09042013ZSD
1
0
ZSD
Run Code Online (Sandbox Code Playgroud)
我使用带有ExplicitCapture设置的http://regexhero.net/tester/(Split)测试了正则表达式,并返回了所需的结果.
工作方案
$RegexOptions = [System.Text.RegularExpressions.RegexOptions]
$csvSplit = '(,)(?=(?:[^"]|"[^"]*")*$)'
$splitColumns = [regex]::Split("StringHere", $csvSplit, $RegexOptions::ExplicitCapture)
Run Code Online (Sandbox Code Playgroud) 我有一个两层分层网格,我从服务器端绑定到使用ajax.两个数据层的ajax读取工作正常但是我很难使用ClientTemplate基于条件逻辑来呈现我的列.
下面是服务器端绑定版本.我知道我必须使用ClientTemplate和表达式#=#才能产生相同的效果,但我遇到两个问题:
将其转换为表达式将是最有帮助的.
var i = -1;
@(Html.Kendo().Grid<MyViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.Selected).Title("")
.Template(
@<text>
@{i++;}
@if (Model.Permissions.HasInsertAccess && item.Status == Status.Created)
{
<input type="hidden" name="MyViewModels.Index" value="@i" />
@Html.CheckBoxFor(m => m.MyViewModels[i].Selected)
}
</text>);
columns.Bound(c => c.Id)
.Template(@<text>@Html.HiddenFor(m => m.MyViewModels[i].Id)@item.Id</text>)
Run Code Online (Sandbox Code Playgroud) 我有自己的自定义配置部分,但想创建一个内部具有简单键/值的新元素.现在我有一个工作版本,但似乎有很多代码用于这么简单的任务.是否有改进的做事方式?
下面是我的配置和自定义配置类的剥离版本.
web.config中
<myRootNode>
<myNode>
<add key="a" value="" />
<add key="b" value="" />
<add key="c" value="" />
...
</myNode>
...any other nodes
</myRootNode>
Run Code Online (Sandbox Code Playgroud)
自定义配置类
public class MyRootNode : ConfigurationSection
{
[ConfigurationProperty("myNode")]
public MyNodeElement MyNode
{
get { return (MyNodeElement)this["myNode"]; }
}
}
[ConfigurationCollection(typeof(BaseElement), AddItemName = "add")]
public class MyNodeElement : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new BaseElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((BaseElement)element).Key;
}
public BaseElement this[int index]
{
get { return this.BaseGet(index) as …Run Code Online (Sandbox Code Playgroud) 我想创建模型绑定功能,以便用户可以输入','''.等等,用于绑定到我的ViewModel的double值的货币值.
我能够通过创建自定义模型绑定器在MVC 1.0中执行此操作,但是自从升级到MVC 2.0后,此功能不再有效.
有没有人有任何想法或更好的解决方案来执行此功能?更好的解决方案是使用一些数据注释或自定义属性.
public class MyViewModel
{
public double MyCurrencyValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一个首选的解决方案是这样的......
public class MyViewModel
{
[CurrencyAttribute]
public double MyCurrencyValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
下面是我在MVC 1.0中进行模型绑定的解决方案.
public class MyCustomModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
object result = null;
ValueProviderResult valueResult;
bindingContext.ValueProvider.TryGetValue(bindingContext.ModelName, out valueResult);
bindingContext.ModelState.SetModelValue(bindingContext.ModelName, valueResult);
if (bindingContext.ModelType == typeof(double))
{
string modelName = bindingContext.ModelName;
string attemptedValue = bindingContext.ValueProvider[modelName].AttemptedValue;
string wantedSeperator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
string alternateSeperator = (wantedSeperator == …Run Code Online (Sandbox Code Playgroud) 我想知道如何计算锯齿状数组中唯一值的数量.
我的域对象包含一个具有空格分隔值的字符串属性.
class MyObject
{
string MyProperty; //e.g = "v1 v2 v3"
}
Run Code Online (Sandbox Code Playgroud)
给定一个MyObject 列表,如何确定唯一值的数量?
以下linq代码返回锯齿状数组值的数组.一种解决方案是存储临时单个项目数组,循环遍历每个锯齿状数组,如果值不存在,则添加它们.然后一个简单的计数将返回唯一的值数.但是,想知道是否有更好的解决方案.
db.MyObjects.Where(t => !String.IsNullOrEmpty(t.MyProperty))
.Select(t => t.Categories.Split(new char[] { ' ' },
StringSplitOptions.RemoveEmptyEntries))
.ToArray()
Run Code Online (Sandbox Code Playgroud)
以下是一个更具可读性的示例:
array[0] = { "v1", "v2", "v3" }
array[1] = { "v1" }
array[2] = { "v4", "v2" }
array[3] = { "v1", "v5" }
Run Code Online (Sandbox Code Playgroud)
从所有值中,唯一项为v1,v2,v3,v4,v5.
唯一商品的总数为5.
有没有一个解决方案,可能使用linq,只返回唯一值或返回唯一值的数量?
我正在尝试掌握 WPF 应用程序中设置样式/绑定数据的不同方式。为了更好地理解这一点,我希望获得关于如何设计我的具体示例的建议/帮助。
下面的屏幕截图展示了我想要的外观。我还包括了我已经编写的代码。然而,这只是使用简单的 StackPanel 输出主标题和下面的文本。
我的第一个问题是关于多少“信息”,以及应该将哪些内容放入视图中,然后在我的 resources.xaml 中应设置哪些样式以及如何设置样式?这可能很模糊,但我想了解我应该考虑将哪些控件包含在我的视图中,以及我应该考虑将哪些代码放入我的样式中。
图片示例

MyView.xaml
<ScrollViewer VerticalScrollBarVisibility="Auto" Padding="20 0">
<ItemsControl ItemsSource="{Binding MyModelList}" ItemTemplate="{StaticResource MyViewDataTemplate}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)
资源.xaml
<DataTemplate x:Key="MyViewDataTemplate">
<Border BorderThickness="0 0 0 1" BorderBrush="Black">
<StackPanel>
<Label Content="{Binding Heading}" FontSize="24" />
<Label>
<Label.Content>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="Card: {0}, {1}">
<Binding Path="PropertyA"></Binding>
<Binding Path="PropertyB"></Binding>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</Label.Content>
</Label>
</StackPanel>
</Border>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud) c# ×8
asp.net-mvc ×3
arrays ×1
casting ×1
currency ×1
generics ×1
html-helper ×1
ienumerator ×1
kendo-grid ×1
kendo-ui ×1
linq ×1
modelbinders ×1
powershell ×1
properties ×1
regex ×1
settings ×1
split ×1
styles ×1
telerik ×1
wpf ×1