小编Alf*_*ono的帖子

创建LINQ表达式,其中参数等于object

鉴于原始值,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)

c# linq entity-framework-5

21
推荐指数
1
解决办法
2万
查看次数

使CustomValidator与ValidationSummary messagebox一起使用的优雅方法

我以前遇到过这个问题,但从未完全解决过.我有一个包含多个验证器和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)

asp.net customvalidator validationsummary

19
推荐指数
3
解决办法
4万
查看次数

同一个HttpVerb的多个动作

我有一个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路由与自定义操作名称相结合的任何想法?

编辑:路由机制不会被控制器的选择混淆.它被单个控制器上的动作选择所迷惑.我需要的是在没有指定动作时匹配默认动作.希望澄清事情.

c# asp.net-web-api asp.net-web-api-routing

9
推荐指数
2
解决办法
6514
查看次数

jQuery:确定<li>是否包含<ul>

我有一些包含嵌套<ul>元素的HTML代码,我需要为<li>包含子元素的每个元素添加一个类'parent' <ul>.可以有多个元素直接包含单个元素<li>,例如:

<li>
    <a>...</a>
    <span>...</span>
    <ul>...</ul>
</li>
Run Code Online (Sandbox Code Playgroud)

我只需要确定一个特定的<li>包含<ul>一个子元素.

我该怎么做?

jquery

5
推荐指数
1
解决办法
9664
查看次数

设置Context.Response.StatusCode似乎不起作用

我有一个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)

.net c# http http-status-codes

5
推荐指数
2
解决办法
3万
查看次数

SQL Server 2005使用ROW_NUMBER()进行过滤和分页

我有一个表有数千条记录的表,并希望实现分页逻辑.在做了一些研究之后,我遇到了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)

paging sql-server-2005

2
推荐指数
1
解决办法
3132
查看次数

Sitecore多个站点实现

我有一个拥有30多个独立运营的组织单位的客户.目前,所有OU都有由客户的IT部门在不同CMS产品的单独实例中管理的网站.由于其广告的多站点功能,他们决定使用Sitecore.

不幸的是,当前(6.5/6.6)默认实现不起作用的原因如下:

  1. 每次站点更改都需要更改web.config(添加/删除).
  2. 所有内容项都必须位于"/ sitecore/content"节点下.我们宁愿下创建多个节点/sitecore例如/sitecore/OU1,/sitecore/OU2等...
  3. 所有模板都必须在/sitecore/Templates.我们宁愿创建的每个组织单位如在"模板"文件夹/sitecore/OU1/Templates,/sitecore/OU2/Templates等等...
  4. 所有布局都必须/sitecore/Layouts/位于同一文件系统目录下.随着网站数量的增加,这肯定会变得混乱./sitecore/OU1/Layouts/并且/sitecore/OU2/Layouts是绝对最好
  5. 我们需要隔离管理站点.每个站点管理员都需要登录并仅查看与其站点相关的内容/项目.因此,如果我们锁定/隐藏顶级OU节点,则可以更轻松地进行维护.
  6. 我们还需要隔离文件系统,以便开发人员在web.config中出错时不会将所有30多个站点关闭.

在最近的Sitecore研讨会上,Tim Ward介绍了在Sitecore中实现多个站点的不同方法.不幸的是,没有办法知道他指的是哪些产品.我不在,但我的老板出席了.我试图与Sitecore取得联系,但尚未收到回复.

我还联系了Sitecore,要求提供有关Sitecore Foundry是否旨在满足此需求的信息,但没有回应.

有谁知道实现这样的多个站点Sitecore的方法?

sitecore sitecore6

2
推荐指数
1
解决办法
1911
查看次数

jQuery字母索引

我是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做到这一点?

jquery

1
推荐指数
1
解决办法
2552
查看次数

实体框架继承 - 确定对象类型

我有一个与此类似的实体框架模型:

  1. 员工(继承人)
  2. 联系(继承人)

我可以添加,查询(使用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)

有办法吗?

entity-framework-4

1
推荐指数
1
解决办法
1384
查看次数