小编Kas*_*sem的帖子

将Dictionary <string,object>转换为匿名对象?

首先,为了让事情更清楚,我将从顶部解释我的情景:

我有一个具有以下签名的方法:

public virtual void SendEmail(String from, List<String> recepients, Object model)
Run Code Online (Sandbox Code Playgroud)

我想要做的是生成一个匿名对象,它具有模型对象的属性以及前两个参数.将模型对象展平为PropertyInfo []非常简单.因此,我想到创建一个包含PropertyInfo和前两个参数的字典,然后转换为匿名对象,其中键是属性的名称,值是属性的实际值.

那可能吗?还有其他建议吗?

.net c# dictionary anonymous-types

75
推荐指数
5
解决办法
6万
查看次数

EF包含其他实体(通用存储库模式)

我在Entity Framework Code First上使用Generic Repository模式.一切都工作正常,直到我需要在查询中包含更多实体.我成功地包含了一个实体,但现在我无法弄清楚如何包含多个实体.看看到目前为止我得到了什么:

public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class
{
    var entityName = GetEntityName<TEntity>();
    return _objectContext.CreateQuery<TEntity>(entityName);
}

public IList<TEntity> GetQueryWithInclude<TEntity>(string toInclude) where TEntity : class
{
    var entityName = GetEntityName<TEntity>();
    return _objectContext.CreateQuery<TEntity>(entityName).Include(toInclude).ToList();
}

private string GetEntityName<TEntity>() where TEntity : class
{
    return string.Format("{0}.{1}", _objectContext.DefaultContainerName, _pluralizer.Pluralize(typeof(TEntity).Name));
}
Run Code Online (Sandbox Code Playgroud)

我尝试但没有工作的是将一个字符串数组传递给一个函数,然后尝试在查询之上"追加"包含.我在想,如果我叫GetQueryWithInclude并在同一时间聚集查询的结果通过了实体名称(实际导航性能),但我担心这可能会重复在每次调用查询的结果...您认为最好的方法是什么?

提前致谢!

更新:

这是我想要实现的一个例子:

public IQueryable GetQueryWithIncludes(string[] otherEntities)
{
    var entityName = GetEntityName<TEntity>();
    //now loop over the otherEntities array 
    //and append Include extensions to the query
    //so inside the loop, something …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework repository-pattern entity-framework-4 ef-code-first

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

自定义授权属性

我正在构建自己的会员系统,我想要与MS会员提供商无关.我查看了互联网和StackOverflow,但我所能找到的只是建立在MS会员提供商之上的会员提供商.

无论如何,我现在几乎所有东西都挂了,但我想使用自定义的Authorize属性来利用我的会员基础设施.我在网站上查看了这个帖子,我正在尝试做类似的事情,但我不确定我需要的是什么.到目前为止,这些是我得到的课程:

SessionManager:

public static class SessionManager : ISessionManager
{
    public static void RegisterSession(string key, object obj)
    {
        System.Web.HttpContext.Current.Session[key] = obj;
    }

    public static void FreeSession(string key)
    {
        System.Web.HttpContext.Current.Session[key] = null;
    }


    public static bool CheckSession(string key)
    {
        if (System.Web.HttpContext.Current.Session[key] != null)
            return true;
        else
            return false;
    }


    public static object ReturnSessionObject(string key)
    {
        if (CheckSession(key))
            return System.Web.HttpContext.Current.Session[key];
        else
            return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

SharweAuthorizeAttribute: (我真的不知道,如果这确实是我应该做的事)

public class SharweAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext) …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-membership asp.net-mvc-3

40
推荐指数
1
解决办法
3万
查看次数

从HTML标记中为observable提供初始值

我正在尝试创建一个HtmlHelper向视图输出一些HTML 的扩展.在这个HTML中,我正在连接一些KnockoutJS绑定.我是KO的新手,所以我仍然在努力完成一些事情.无论如何,我要做的是生成绑定到客户端代码上的observable的输入字段(在服务器端代码中),然后通过隐藏字段的值设置observable的初始值.不幸的是,这对我不起作用.所以我想知道我是否有办法完成这项任务(即使我必须完全不同).

这是我基本上在做的事情:

在我的客户端视图模型中,我有以下内容:

self.dataSource = ko.observable();
self.pageSize = ko.observable();
Run Code Online (Sandbox Code Playgroud)

我的扩展方法输出如下:

<input type="hidden" value="/Employee/Get" data-bind="value: dataSource" />
<input type="hidden" value="30" data-bind="value: pageSize" />
Run Code Online (Sandbox Code Playgroud)

但是当页面呈现时,当我检查元素时,我注意到value输入字段的输入字段被设置为空字符串,我认为这是因为可以观察到observables的方式.但有没有办法来覆盖这种行为或其他什么?

javascript data-binding observable knockout.js

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

在ASP.NET MVC中实现"记住我"功能

我正在尝试在登录表单中实现"记住我"功能.我使用ASP.NET MVC作为我的Web应用程序.我设法让cookie的东西工作,但我没有自动登录用户,以防他/她之前检查记住我复选框.我知道问题是什么,但我不知道如何解决它.

在我的HomeController中,我有以下内容:

private LoginViewModel CheckLoginCookie()
{
    if (!string.IsNullOrEmpty(_appCookies.Email) && !string.IsNullOrEmpty(_appCookies.Password))
    {
        var login = new LoginViewModel
                        {
                            Email = _appCookies.Email,
                            Password = _appCookies.Password
                        };

        return login;
    }
    return null;
}


public ActionResult Index()
{
    var login = CheckLoginCookie();
    if (login != null)
        return RedirectToAction("Login", "User", login);

    var viewModel = new HomeIndexViewModel
                        {
                            IntroText =
                                "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-routing remember-me asp.net-mvc-3

23
推荐指数
1
解决办法
6万
查看次数

内容文件夹内的文件路径(ASP.NET MVC)

关于Content文件夹如何在ASP.NET MVC中工作,我仍然无法理解.为了使事情更清楚,我有几个问题:

  1. Content文件夹是根文件夹吗?我的意思是http:// localhost /指向内容还是其他的东西?
  2. 我在Content/images/temp文件夹中有一个名为dummyIcon.png的文件.如何从我的域层(代码库项目)中找到它?
  3. 在ASP.NET MVC中显示图像的最佳实践是什么?我应该在数据库中存储图像的路径(我个人更喜欢),还是保存一个字节数组并将其返回到视图?

我发现以下链接在MVC Web应用程序的上下文中有用,但我仍然感谢上面发布的问题的一些答案.谢谢.

ASP.NET MVC控制器可以返回一个Image吗?

如何使用ASP.NET MVC的视图和控制器显示图像

c# asp.net asp.net-mvc localhost asp.net-mvc-3

22
推荐指数
2
解决办法
7万
查看次数

IIS重写不起作用(但重定向确实)

我正在尝试使用Rewrite Module 2.0进行URL 重写,但我没有运气让它工作.我要做的是将端口80上的所有对Web应用程序的调用重新写入IIS中托管的其他应用程序(或者可能在网络上的不同服务器上).使用IIS提供的GUI我创建了以下规则:

<rewrite>
    <rules>
        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="site1/(.*)" />
            <action type="Rewrite" url="http://localhost:7001/{R:1}" />
        </rule>
    </rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)

安静简单,但不幸的是它不起作用.另一方面,当我将动作类型更改为时Redirect,它可以正常工作.

可能是什么问题呢?

.net asp.net iis url-rewriting url-rewrite-module

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

按用户ID查询Google Analytics

有没有办法使用Core Reporting API(v3)查询结果并按用户ID过滤这些结果,假设它正确地发送到Google Analytics?

我已经搜索了很多这个问题并阅读了大量文章,但我没有找到一个可以做到这一点的地方.而且,我无法User ID在报告界面中看到任何地方,这让我怀疑这甚至是可能的.我猜我必须在这里做一些类似于推荐的东西才能做到这一点?

UPDATE

显然,我的问题的目的并不十分清楚,正如Eike的评论所强调的那样.我想要做的是使用客户端API为具有特定Id的特定用户生成报告,然后将这些结果与我在系统数据库中有关此用户的信息相结合,以根据我的业务需求执行某些操作.

google-analytics userid google-analytics-api

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

Html.Action()导致StackOverflowException

出于某种原因,我的一个Html.Action()方法抛出了一个StackOverflowException,它只是在我调试Web服务器实例后才被捕获并停止响应.我得到的就是这个:

System.StackOverflowException未处理

无法计算表达式,因为当前线程处于堆栈溢出状态.

抛出异常的行是这样的:

<div id="userInfoSummary">@Html.Action("Summary", "User")</div>

当我登录然后被重定向到主页时会发生这种情况(这种情况从未发生过,因为它被卡住了.

以下是我如何检查用户是否登录以适应呈现视图的方式:

<div id="userPanel">
                @if (!SessionManager.CheckSession(SessionKeys.User))
                {
                    <div id="loginForm">@Html.Action("Login", "User")</div>
                    <div id="registerForm">@Html.Action("Register", "User")</div>
                    <hr class="greyLine" />

                    <div id="recentlyViewedItems">
                        <div id="recentItemsTitle">
                            <span class="recentItemsIcon"></span><span class="theRecentTitle">Recently Viewed</span>
                        </div>
                    </div>
                }
                else
                {
                    <div id="userInfoSummary">@Html.Action("Summary", "User")</div>
                } 
            </div>
Run Code Online (Sandbox Code Playgroud)

这是我的ActionMethods:

    [HttpPost]
    public ActionResult Login(LoginViewModel dto)
    {
        bool flag = false;
        if (ModelState.IsValid)
        {
            if (_userService.AuthenticateUser(dto.Email, dto.Password, false)) {
                var user = _userService.GetUserByEmail(dto.Email);
                var uSession = new UserSession
                {
                    ID = user.Id,
                    Nickname = user.Nickname
                };
                SessionManager.RegisterSession(SessionKeys.User, uSession);
                flag …
Run Code Online (Sandbox Code Playgroud)

.net asp.net debugging asp.net-mvc asp.net-mvc-3

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

使用requirejs按需使用AngularJS路由和加载控制器

我正在尝试组合使用AngularJS和RequireJS.我想使用该$routeProvider服务,避免在应用程序启动时为我的视图加载所有控制器.为此,我尝试了以下方法:

define(['require', 'angular', 'appModule'], function (require, angular, app) {
    app.config(['$routeProvider', function($routeProvider) {
      $routeProvider
          .when('/sites', {templateUrl: '/Site/GetSitesView', controller: function() {
            require(['sitesController'], function(SitesController) {
                return new SitesController();
            })
        }})
    }]);
});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这对我不起作用.没有错误.包含控制器的JS文件正在正确加载,但我无法在渲染视图中看到数据绑定值.我想知道是否可以controller以其他方式分配等待异步调用(加载JS文件)来完成的值.

有任何想法吗?

routing requirejs angularjs

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