Microsoft 使用该asp:Repeater控件引入数据绑定提供了获取值的语法:
<b><%# DataBinder.Eval(Container.DataItem, "orderid") %></b>
Run Code Online (Sandbox Code Playgroud)
在对ASP.net Repeater控件的其他介绍中重复此语法:
<a href="<%# DataBinder.Eval(Container.DataItem, "URL") %>">...</a>
Run Code Online (Sandbox Code Playgroud)
但我记得这种语法是"坏"和"错误".从我的MSDN文档中DataBinder.Eval看到:
注意
由于此方法执行后期绑定评估,在运行时使用反射,因此与标准ASP.NET数据绑定语法相比,它可能会导致性能明显变慢.
(重点补充)
这就解释了为什么我记得" Eval很糟糕".但什么是 "标准的ASP.NET数据绑定语法"?
我有一个Repeater控件,可以向表中添加行.每个单元格内的数据来自绑定到转发器的数据表.
简化示例:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "PartNumber")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Quantity")%>
</td>
</tr>
</ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,我希望能够循环遍历每个转发器行并获取该行的Quantity值.
到目前为止我只有:
foreach (RepeaterItem ri in Repeater1.Items)
{
}
Run Code Online (Sandbox Code Playgroud) 我有repeater类似以下的,
<asp:Repeater ID="rptEntries" runat="server">
<ItemTemplate>
<asp:LinkButton ID="lnk1" runat="server" Text=""></asp:LinkButton>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
现在,我想将LinkButtons 的Text值与以下内容绑定,
<%# DataBinder.Eval(Container.DataItem, "EntryText") %>
Run Code Online (Sandbox Code Playgroud)
但是,当我执行以下操作时,我会得到双引号问题,
Text="<%# DataBinder.Eval(Container.DataItem, "EntryText") %>"
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
当DataItem为空时,我无法确定如何隐藏','.
基本上,我有表行显示注册地址并使用以下技术填充:
<%# DataBinder.Eval(Container.DataItem, "Address_Line_1" )%>,
<%# DataBinder.Eval(Container.DataItem, "Address_Line_2")%>,
<%# DataBinder.Eval(Container.DataItem, "TOWNLAND")%>,
<%# DataBinder.Eval(Container.DataItem, "CITY")%>,
<%# DataBinder.Eval(Container.DataItem, "STATE")%>,
Run Code Online (Sandbox Code Playgroud)
现在,如果上面的一个或多个DataItem返回为Empty,则在前端显示为
地址1 ,,, CITY ,,
我尝试了以下隐藏逗号(','),但我一直收到错误说
在'If'语句的第一行缺少')'
<%#IIf(IsDBNull(DataBinder.Eval(Container.DataItem, "STATE")) OrElse
String.IsNullOrEmpty(DataBinder.Eval(Container.DataItem, "STATE")) , "" ,
DataBinder.Eval(Container.DataItem, "STATE") & ",")%>
Run Code Online (Sandbox Code Playgroud)
我不确定我的'if'陈述是错还是不能如上所述?
任何人都有关于上述或任何其他隐藏逗号的替代方法的建议,如果是NULL值?
在使用Databinder Dispatch使用Json进行编码的示例中,Nathan使用了一个没有方法的Object(Http),如下所示:
import dispatch._
import Http._
Http("http://www.fox.com/dollhouse/" >>> System.out )
Run Code Online (Sandbox Code Playgroud)
他是怎么做到的?
谢谢你所有的答案,不幸的是我不够具体......
看起来它只是将一个参数传递给类或伴随对象Http的构造函数.
在另一个例子中,我看到了另一种形式:
http = new Http
http(/* argument here */)
Run Code Online (Sandbox Code Playgroud)
这是有效的Scala吗?我想它一定是,因为作者是Scala专家.但这对我没有意义.动作通常通过调用对象上的方法来执行,无论是显式地为object.doSomething()还是隐式地为object = something(使用语法糖下的apply()方法).
我能想到的是构造函数除了用于构造对象之外还用于执行某些操作.换句话说,它具有副作用,例如在这种情况下,在网络上做一些事情.
我正在使用 Spring 3.2.0。我已经注册了一些自定义属性编辑器以满足一些基本需求,如下所示。
import editors.DateTimeEditor;
import editors.StrictNumberFormatEditor;
import java.math.RoundingMode;
import java.net.URL;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import org.joda.time.DateTime;
import org.springframework.beans.propertyeditors.StringTrimmerEditor;
import org.springframework.beans.propertyeditors.URLEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.context.request.WebRequest;
@ControllerAdvice
public final class GlobalDataBinder
{
@InitBinder
public void initBinder(WebDataBinder binder, WebRequest request)
{
binder.setIgnoreInvalidFields(true);
binder.setIgnoreUnknownFields(true);
//binder.setAllowedFields(someArray);
NumberFormat numberFormat=DecimalFormat.getInstance();
numberFormat.setGroupingUsed(false);
numberFormat.setMaximumFractionDigits(2);
numberFormat.setRoundingMode(RoundingMode.HALF_UP);
binder.registerCustomEditor(DateTime.class, new DateTimeEditor("MM/dd/yyyy HH:mm:ss", true));
binder.registerCustomEditor(Double.class, new StrictNumberFormatEditor(Double.class, numberFormat, true));
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
binder.registerCustomEditor(URL.class, new URLEditor());
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我已经注册了这么多编辑。其中两个DateTimeEditor已StrictNumberFormatEditor通过重写各自的方法进行定制,以满足数字格式和Joda-Time的自定义需求。
由于我使用的是 Spring 3.2.0,因此我可以利用@ControllerAdvice …
我想在scala程序中下载给定URL的图像.我正在尝试做类似以下的事情,但我可以找到有关文本而不是数据流的所有调度程序示例.有人能指出我使用调度从URL下载二进制文件的例子吗?如果我尝试直接使用img关于Future的编译器barfs.
我正在尝试执行的任务是检索Facebook个人资料图片.
def copyUrl( uri : String ) : Array[Byte] = {
val svc = url(uri)
val img = Http(svc OK as.Bytes)
for ( i <- img ) {
println(i)
}
// something here but no idea
img.map(_.toArray)
}
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误
ProfileImage.scala:31: type mismatch;
[error] found : scala.concurrent.Future[Array[Byte]]
[error] required: Array[Byte]
[error] img.map(_.toArray)
[error] ^
[error] one error found
Run Code Online (Sandbox Code Playgroud)
我也试过了
def copyUrl( uri : String ) : Array[Byte] = {
result = scala.io.Source.fromURL(uri).map(_.toByte).toArray
}
Run Code Online (Sandbox Code Playgroud)
结果
Exception being returned to browser when …Run Code Online (Sandbox Code Playgroud) databinder ×7
c# ×3
asp.net ×2
scala ×2
.net ×1
data-binding ×1
facebook ×1
loops ×1
repeater ×1
spring ×1
spring-3 ×1
spring-mvc ×1