我想知道是否可以在对方法的调用中有条件地添加参数.
例如,我在我的Site.Master中渲染一堆链接(总共六个)用于导航:
<%= Html.ActionLink("About", "About", "Pages") %> |
<%= Html.ActionLink("Contact", "Contact", "Pages") %>
<%-- etc, etc. --%>
Run Code Online (Sandbox Code Playgroud)
如果它在该页面上,我想为链接包含一个"选定"的CSS类.所以在我的控制器中我回来了:
ViewData.Add("CurrentPage", "About");
return View();
Run Code Online (Sandbox Code Playgroud)
然后在视图中我有一个htmlAttributes字典:
<% Dictionary<string,object> htmlAttributes = new Dictionary<string,object>();
htmlAttributes.Add("class","selected");%>
Run Code Online (Sandbox Code Playgroud)
现在我唯一的问题是如何为正确的ActionLink包含htmlAttributes.我可以通过这种方式为每个链接做到这一点:
<% htmlAttributes.Clear();
if (ViewData["CurrentPage"] == "Contact") htmlAttributes.Add("class","selected");%>
<%= Html.ActionLink("Contact", "Contact", "Pages", htmlAttributes) %>
Run Code Online (Sandbox Code Playgroud)
但这似乎有点重复.有没有办法做这样的psuedo代码:
<%= Html.ActionLink("Contact", "Contact", "Pages", if(ViewData["CurrentPage"] == "Contact") { htmlAttributes }) %>
Run Code Online (Sandbox Code Playgroud)
这显然不是有效的语法,但有没有正确的方法呢?我对提供这些链接的任何完全不同的建议持开放态度.我想继续使用像ActionLink这样的东西,利用我的路线,而不是硬编码标签.
我这些天学习了很多javascript,其中一个我不太了解的事情就是将函数作为参数传递给其他函数.我得到了做这些事情的概念,但我自己无法想出任何理想的情况.
我的问题是:
你想什么时候让你的javascript函数作为参数使用另一个函数?为什么不直接为该函数的返回值赋一个变量,并将该变量传递给函数,如下所示:
// Why not do this
var foo = doStuff(params);
callerFunction(foo);
//instead of this
callerFunction(doStuff);
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么我会选择做第二个例子中的事情.
你为什么要这样做?有哪些用例?
谢谢!!
我想将文件从一个主机获取到另一个主机.我们可以使用NET :: FTP模块获取文件.在该模块中,我们可以使用该get方法来获取文件.但我想要文件内容而不是文件.我知道使用该read方法我们可以读取文件内容.但是如何调用该read函数以及如何获取文件内容?
我在数据库中有一个用户应该能够订购的列表.
itemname| order value (int)
--------+---------------------
salad | 1
mango | 2
orange | 3
apples | 4
Run Code Online (Sandbox Code Playgroud)
从数据库加载,我只是order by order_value.
通过拖放,他应该能够移动apples,使其出现在列表的顶部..
itemname| order value (int)
--------+---------------------
apples | 4
salad | 1
mango | 2
orange | 3
Run Code Online (Sandbox Code Playgroud)
好.所以现在在内部我必须更新每个列表项目!如果列表有20或100个项目,那么对于简单的拖动操作来说,这是很多更新.
itemname| order value (int)
--------+---------------------
apples | 1
salad | 2
mango | 3
orange | 4
Run Code Online (Sandbox Code Playgroud)
我宁愿只做一次更新.我想到的一种方式是"内部订单"是否为double值.
itemname| order value (double)
--------+---------------------
salad | 1.0
mango | 2.0
orange | 3.0
apples | …Run Code Online (Sandbox Code Playgroud) 我想定义一个模板类,其模板参数将始终是一个整数类型.该类将包含两个成员,一个是类型,另一个是类型T的无符号变体T- 即if T == int,then T_Unsigned == unsigned int.我的第一直觉是这样做:
template <typename T> class Range {
typedef unsigned T T_Unsigned; // does not compile
public:
Range(T min, T_Unsigned range);
private:
T m_min;
T_Unsigned m_range;
};
Run Code Online (Sandbox Code Playgroud)
但它不起作用.然后我考虑使用部分模板专业化,如下所示:
template <typename T> struct UnsignedType {}; // deliberately empty
template <> struct UnsignedType<int> {
typedef unsigned int Type;
};
template <typename T> class Range {
typedef UnsignedType<T>::Type T_Unsigned;
/* ... */
};
Run Code Online (Sandbox Code Playgroud)
只要您UnsignedType对每个整数类型进行部分专门化,这都可以.这是一些额外的复制粘贴工作(削减明智地使用宏),但可以使用. …
我有一个UIScrollView包含许多UIImageViews,UILabels等...标签比它长得多UIScrollView,但是当我运行应用程序时,我无法点击并向下滚动...
为什么会这样?
谢谢
我正在尝试使用sscanf将字符串转换为GUID:
GUID guid;
sscanf( "11111111-2222-3333-4455-667788995511", "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
&guid.Data1, &guid.Data2, &guid.Data3,
&guid.Data4[0], &guid.Data4[1], &guid.Data4[2],
&guid.Data4[3], &guid.Data4[4], &guid.Data4[5],
&guid.Data4[6], &guid.Data4[7]);
Run Code Online (Sandbox Code Playgroud)
但是,在运行时,它会失败并以"错误:命令失败"退出.为什么?怎么解决?
我不想用/ clr编译所以不能使用System.
我有一个通用函数foo,它接受任何类型并打印出来.
public static <T> T foo(T... arg) {
List<T> foo = Arrays.asList(arg);
for (T t : foo) {
System.out.println(t);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
如何确保收到的参数只有一种类型.例如,{1,'a',3}应该无效.它应该是所有数字或所有字符.我想接受所有整数或所有字符.
我创建了一个F#类来表示一个数组,该数组为特定枚举的每个值分配一个元素.我正在使用一个显式构造函数,它创建一个从枚举值到数组索引的字典,以及一个Item属性,以便您可以编写如下表达式:
let my_array = new EnumArray<EnumType, int>
my_array.[EnumType.enum_value] <- 5
Run Code Online (Sandbox Code Playgroud)
但是,我在下面标有'// FS0670'的行中遇到以下模糊的编译错误.
error FS0670: This code is not sufficiently generic.
The type variable ^e when ^e : enum<int> and ^e : equality
and ^e : (static member op_Explicit : ^e -> int)
could not be generalized because it would escape its scope.
Run Code Online (Sandbox Code Playgroud)
我不知所措 - 任何人都可以解释这个错误吗?
type EnumArray< 'e, 'v when 'e : enum<int> //'
and 'e : equality
and 'e : (static member op_Explicit : 'e -> int) > = …Run Code Online (Sandbox Code Playgroud) c++ ×2
generics ×2
actionlink ×1
asp.net-mvc ×1
c ×1
c# ×1
conditional ×1
edit ×1
enums ×1
f# ×1
footer ×1
guid ×1
ios ×1
ipad ×1
iphone ×1
java ×1
javascript ×1
mysql ×1
parameters ×1
perl ×1
scanf ×1
sql ×1
sql-update ×1
tcpdf ×1
templates ×1
traits ×1
types ×1
uiscrollview ×1
unsigned ×1