Быстрое решение с пользовательской ячейкой:
import Foundation
class CustomTableViewCell: UITableViewCell
{
required init(coder aDecoder: NSCoder)
{
fatalError("init(coder:) has not been implemented")
}
override init(style: UITableViewCellStyle, reuseIdentifier: String?)
{
super.init(style: style, reuseIdentifier: reuseIdentifier)
self.selectionStyle = UITableViewCellSelectionStyle.None
}
}
Вы можете сделать это так -
<asp:Hyperlink runat="Server" ID="hlLink" NavigateUrl='<%# FurtherReadingPage + "?Id=" + DataBinder.Eval(Container.DataItem, "Id") %>' />
За кулисами он использует указатель на член и применяет его к переданному аргументу. Это довольно сложно в контексте связывания, поэтому вот простой пример использования указателя на член:
int main()
{
std::pair< int, int > p1 = make_pair( 1, 2 );
std::pair< int, int > p2 = make_pair( 2, 4 );
int std::pair<int,int>::*ptr = &std::pair<int,int>::second; // pointer to second member
std::cout << p1.*ptr << std::endl; // 2 dereference pointer to member
std::cout << p2.*ptr << std::endl; // 4 dereference pointer to member
}
За кулисами связывание составляет различные вызовы. Результирующий функтор принимает разыменование std :: map <> :: iterator (типа std :: pair (* it) .second
внешней привязке, которая передает это значение методу print_string
для окончательного вызова. : print_string ((* it) .second)
.
(* it)
на самом деле _1
, о котором вы спрашивали. Все _ #
являются заполнителями, то есть результатом связывания будет функтор, который будет принимать столько аргументов, сколько существует различных заполнителей в порядке, определяемом количеством заполнителей. В приведенном вами примере результирующий функтор принимает единственный аргумент _1
.
Попробуйте это:
<%#String.Format("{0}?id={1}",FurtherReadingPage, Id)%>