鉴于原始值,age我知道如何创建这样的表达式:
//assuming: age is an int or some other primitive type
employee => employee.Age == age
Run Code Online (Sandbox Code Playgroud)
通过做这个:
var entityType = typeof(Employee);
var propertyName = "Age";
int age = 30;
var parameter = Expression.Parameter(entityType, "entity");
var lambda = Expression.Lambda(
Expression.Equal(
Expression.Property(parameter, propertyName),
Expression.Constant(age)
)
, parameter);
Run Code Online (Sandbox Code Playgroud)
除了在有问题的属性和常量不是原始类型的情况下,这种方法很好.
如果比较是在对象之间,我将如何构造一个类似的表达式?
使用EF我可以写:
Location location = GetCurrentLocation();
employees = DataContext.Employees.Where(e => e.Location == location);
Run Code Online (Sandbox Code Playgroud)
这也有效,但如果我尝试创建相同的表达式:
var entityType = typeof(Employee);
var propertyName = "Location";
var location = GetCurrentLocation();
var parameter = Expression.Parameter(entityType, "entity"); …Run Code Online (Sandbox Code Playgroud) 我以前遇到过这个问题,但从未完全解决过.我有一个包含多个验证器和CustomValidator的表单.
<asp:Label ID="lblMemberNum" runat="server" Text="Membership #:" CssClass="LabelMedium" ></asp:Label>
<asp:TextBox ID="txtMemberNum" runat="server" CssClass="TextBox" ></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvMemberNum" SetFocusOnError="True" runat="server"
ControlToValidate="txtMemberNum" ErrorMessage="[ Membership # ] is required"
CssClass="ValidationMessage" Display="Dynamic" >*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revMemberNum" Display="Dynamic" runat="server"
ControlToValidate="txtMemberNum" CssClass="ValidationMessage"
ErrorMessage="[ Membership # ] can only contain letters"
ValidationExpression="^([a-zA-Z\d]+)$" >*</asp:RegularExpressionValidator>
<asp:CustomValidator ID="cvMemberNum" runat="server"
CssClass="ValidationMessage" Display="Dynamic"
ControlToValidate="txtMemberNum" ValidateEmptyText="false"
OnServerValidate="cvMemberNum_Validate"
ErrorMessage="This membership number is already registered">*</asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
CssClass="ValidationMessage"
ShowMessageBox="True" ShowSummary="False" />
Run Code Online (Sandbox Code Playgroud)
在服务器端:
protected void cvMemberNum_Validate(object source, ServerValidateEventArgs args)
{
try
{
args.IsValid = (!CampaignRegistration.IsMemberRegistered(args.Value));
}
catch
{ …Run Code Online (Sandbox Code Playgroud) 我有一个Web API控制器,其中包含以下操作:
[HttpPut]
public string Put(int id, JObject data)
[HttpPut, ActionName("Lock")]
public bool Lock(int id)
[HttpPut, ActionName("Unlock")]
public bool Unlock(int id)
Run Code Online (Sandbox Code Playgroud)
并映射了以下路线:
routes.MapHttpRoute(
name: "Api",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
routes.MapHttpRoute(
name: "ApiAction",
routeTemplate: "api/{controller}/{action}/{id}"
);
Run Code Online (Sandbox Code Playgroud)
当我提出以下请求时,一切都按预期工作:
PUT /api/items/Lock/5
PUT /api/items/Unlock/5
Run Code Online (Sandbox Code Playgroud)
但是当我试图提出要求时:
PUT /api/items/5
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
Multiple actions were found that match the request:
Put(int id, JObject data)
Lock(int id)
Unlock(int id)
Run Code Online (Sandbox Code Playgroud)
我尝试在默认路由中添加一个空操作名称,但这没有帮助:
[HttpPut, ActionName("")]
public string Put(int id, JObject data)
Run Code Online (Sandbox Code Playgroud)
有关如何将默认RESTful路由与自定义操作名称相结合的任何想法?
编辑:路由机制不会被控制器的选择混淆.它被单个控制器上的动作选择所迷惑.我需要的是在没有指定动作时匹配默认动作.希望澄清事情.
我有一些包含嵌套<ul>元素的HTML代码,我需要为<li>包含子元素的每个元素添加一个类'parent' <ul>.可以有多个元素直接包含单个元素<li>,例如:
<li>
<a>...</a>
<span>...</span>
<ul>...</ul>
</li>
Run Code Online (Sandbox Code Playgroud)
我只需要确定一个特定的<li>包含<ul>一个子元素.
我该怎么做?
我有一个HttpHandler,代码如下:
using System;
using System.Web;
using Company.Cms;
using Company.Web.Handlers.Console;
namespace Company.Web.Handlers
{
/// <summary>
/// Summary description for AdminHandler
/// </summary>
public class AdminHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
HttpRequest request = context.Request;
HttpResponse response = context.Response;
string action = request.QueryString["action"];
if (!HttpContext.Current.User.CanAdminister())
{
response.StatusCode = 403;
response.Status = "403 Access Denied";
response.End();
return;
}
if (String.IsNullOrEmpty(action))
{
response.StatusCode = 404;
response.Status = "404 Not Found";
response.End(); …Run Code Online (Sandbox Code Playgroud) 我有一个表有数千条记录的表,并希望实现分页逻辑.在做了一些研究之后,我遇到了SQL Server 2005中引入的ROW_NUMBER()函数.我的问题是,它似乎无法满足我的确切需求,我想知道如何调整我的存储过程以使其按预期工作:
ALTER PROCEDURE dbo.irweb_Posts_CollectCategoryIdDatesRange
(
@CategoryId int,
@StartDate datetime,
@EndDate datetime,
@IsDeleted bit,
@PageIndex int,
@PageSize int,
@Offset int
)
AS
DECLARE @TotalRecords int
SELECT @TotalRecords = (
SELECT COUNT(irweb_Posts.PostId)
FROM irweb_Posts
WHERE (IsDeleted = @IsDeleted)
AND (CategoryId = @CategoryId)
AND (DateCreated >= @StartDate)
AND (DateCreated <= @EndDate)
)
SELECT *
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY DateCreated DESC) AS RowId, irweb_Posts.*
FROM irweb_Posts
) AS p
WHERE ((IsDeleted = @IsDeleted)
AND (CategoryId = @CategoryId)
AND (DateCreated …Run Code Online (Sandbox Code Playgroud) 我有一个拥有30多个独立运营的组织单位的客户.目前,所有OU都有由客户的IT部门在不同CMS产品的单独实例中管理的网站.由于其广告的多站点功能,他们决定使用Sitecore.
不幸的是,当前(6.5/6.6)默认实现不起作用的原因如下:
/sitecore例如/sitecore/OU1,/sitecore/OU2等.../sitecore/Templates.我们宁愿创建的每个组织单位如在"模板"文件夹/sitecore/OU1/Templates,/sitecore/OU2/Templates等等.../sitecore/Layouts/位于同一文件系统目录下.随着网站数量的增加,这肯定会变得混乱./sitecore/OU1/Layouts/并且/sitecore/OU2/Layouts是绝对最好在最近的Sitecore研讨会上,Tim Ward介绍了在Sitecore中实现多个站点的不同方法.不幸的是,没有办法知道他指的是哪些产品.我不在,但我的老板出席了.我试图与Sitecore取得联系,但尚未收到回复.
我还联系了Sitecore,要求提供有关Sitecore Foundry是否旨在满足此需求的信息,但没有回应.
有谁知道实现这样的多个站点Sitecore的方法?
我是jQuery的新手,所以请原谅...我有一个页面,在无序列表中有很长的超链接列表:
<div class="longlist">
<ul>
<li><a href="/firstitem.aspx" title="First Item">First Item</a></li>
<li><a href="/seconditem.aspx" title="Second Item">Second Item</a></li>
...
<li><a href="/lastitem.aspx" title="Last Item">Last Item</a></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
在此页面的顶部是字母表字母的超链接列表
<div class="alphabet">
<a href="#" title="A">A</a>
<a href="#" title="B">B</a>
<a href="#" title="C">C</a>
...
<a href="#" title="Z">Z</a>
<a href="#" title="All">ALL</a>
</div>
Run Code Online (Sandbox Code Playgroud)
当用户单击字母索引中的任何链接时,我只需要在长列表中显示以所选字母开头的项目.如果长列表中没有与该字母匹配的项目,那么我还需要"灰显"字母链接(这样用户就不会费心点击不存在的索引).
我怎么能用jQuery做到这一点?
我有一个与此类似的实体框架模型:
我可以添加,查询(使用OfType)和更新员工和联系人没有问题.但是,我无法确定Person对象的类型.比如说:
var person = entities.People.Single(p => p.Id == 5);
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点:
if (person.IsEmployee){
//do something
} else if (person.IsContact) {
// do something else
}
Run Code Online (Sandbox Code Playgroud)
或者,我可以满足于此:
if (person.IsOfType<Employee>()){
// do something
} else if (person.IsOfType<Contact>()) {
// do something else
}
Run Code Online (Sandbox Code Playgroud)
有办法吗?